1、RemoteSolrException: Expected mime type application/octet-stream but got text/html
现象:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException :
Expected mime type application/octet-stream but got text/html
. <html><head><title>Apache Tomcat/7.0.54 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 405 - HTTP method POST is not supported by this URL</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>HTTP method POST is not supported by this URL</u></p><p><b>description</b> <u>The specified HTTP method is not allowed for the requested resource.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.54</h3></body></html>
at org.apache.solr.client.solrj.impl.HttpSolrServer.executeMethod(HttpSolrServer.java:516)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:210)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:206)
at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:124)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:116)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:102)
at org.ljh.test.solr.BasicSolrJIndexDemo.main(BasicSolrJIndexDemo.java:23)
分析:
由于各种错误导致了solr返回一个错误页面,而不是index成功的结果,因此出现以上异常。
其中上述html代码格式化后呈现:
type Status report
message HTTP method POST is not supported by this URL
description The specified HTTP method is not allowed for the requested resource.
解决方法:
在使用Tomcat部署Solr后,Collection1的地址为:http://182.92.160.44:8080/solr/#/collection1,但使用SolrJ进行索引的时候,应该使用http://182.92.160.44:8080/solr/collection1,即无中间的#号。
即正确代码为:
String serverUrl = (args != null && args.length > 0) ? args[0] : "http://182.92.160.44:8080/solr/collection1";
错误代码为:
String serverUrl = (args != null && args.length > 0) ? args[0] : "http://182.92.160.44:8080/solr/#/collection1";
错误代码将导致上述错误。