See some examples here:
http://wiki.apache.org/solr/UpdateJSON

I think in your case you just need the JSON array squares brackets around the doument or list of documents.

And also "update/json" in the URL.

-- Jack Krupansky

-----Original Message----- From: Mansour Al Akeel
Sent: Sunday, May 20, 2012 8:35 PM
To: solr-user@lucene.apache.org
Subject: Re: Sending http post to solr indexing

Sorry,
forgot to include the url and the error message:
   private static String url = "http://localhost:8080/solr/update";;

The error I am getting on the server is:
SEVERE: org.apache.solr.common.SolrException: Unexpected character '{'
(code 123) in prolog; expected '<'
at [row,col {unknown-source}]: [1,1]
       at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:81)
       at
org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:58)
       at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
       at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
       at
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
       at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
       at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
       at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       at
org.apache.solr.servlets.SecurityFilter.doFilter(SecurityFilter.java:78)
       at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
       at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
       at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
       at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
       at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
       at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
       at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
       at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
       at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
       at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
       at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
       at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
       at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
       at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
       at java.lang.Thread.run(Thread.java:722)
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected
character '{' (code 123) in prolog; expected '<'
at [row,col {unknown-source}]: [1,1]
       at
com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:648)
       at
com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2047)
       at
com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
       at
org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:104)
       at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:79)
       ... 24 more

May 21, 2012 12:32:13 AM org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/update params={} status=400 QTime=1



On Sun, May 20, 2012 at 8:34 PM, Mansour Al Akeel <mansour.alak...@gmail.com
wrote:

I am trying to post some json objects to solr over http.  Here's my code:

public void index(ProductData product) {

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        httppost.setHeader("Content-type", "application/json");
        httppost.getParams().setParameter("commit", "true");

        try {
            StringEntity entity;
            entity = new StringEntity(product.toString());
            httppost.setEntity(entity);
            HttpResponse response = httpclient.execute(httppost);
            System.out.println(product.toString());
            System.out.println(response.toString());
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


I am getting error 400 bad request. The output showing JSON string (edited
a bit),  and the response:

{ "timeStamp" : 1337560074593 , "title1" : "Sony Handycam HDR-XR260V 160
GB Camcorder" , "price" : 116.5 , "condition" : "New" , "brand" : "Sony" ,
"model" : "HDR-XR260V" , "mpn" : "HDR-XR260V"}
HTTP/1.1 400 Bad Request [Server: Apache-Coyote/1.1, Content-Type:
text/html;charset=utf-8, Content-Length: 1271, Date: Mon, 21 May 2012
00:27:56 GMT, Connection: close]


Is there something I am missing or doing wrong ??

Thank you.



Reply via email to