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.