关于java.io.IOException:服务器返回URL的HTTP响应代码:403和http服务器返回状态码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于android-SoapTh
关于java.io.IOException:服务器返回URL的HTTP响应代码:403和http服务器返回状态码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于android-Soap Throws java.io.IOException:HTTP请求失败,HTTP状态:500、bug 日记之 -------java.io.IOException: Server returned HTTP response code: 400 for URL、fastdfs文件上传报错Save file error:java.io.IOException: java.io.IOException: java.io.IOException: recv package size -1 != 10、Java HttpURLConnection.getInputStream但获取401 IOException等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- java.io.IOException:服务器返回URL的HTTP响应代码:403(http服务器返回状态码)
- android-Soap Throws java.io.IOException:HTTP请求失败,HTTP状态:500
- bug 日记之 -------java.io.IOException: Server returned HTTP response code: 400 for URL
- fastdfs文件上传报错Save file error:java.io.IOException: java.io.IOException: java.io.IOException: recv package size -1 != 10
- Java HttpURLConnection.getInputStream但获取401 IOException
java.io.IOException:服务器返回URL的HTTP响应代码:403(http服务器返回状态码)
我想从URL打开一个链接:“ http://www.kohls.com/search.jsp?search=jacket&submit-
search=web-regular ”,有时我得到:
java.io.IOException:服务器返回URL的HTTP响应代码:403。但是使用浏览器打开网址是可以的。以下是我的代码的一部分:
URL url = new URL("http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regular");InputStream is = url.openConnection().getInputStream();
错误详情
线程“主”中的异常java.io.IOException:服务器返回HTTP响应代码:403,用于URL:http
:
//www.kohls.com/search.jsp?
N = 0&search
= jacket&WS
=
96,位于sun.net.www。位于Links.main(Links.java:41)的协议.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1627)
答案1
小编典典您尝试访问的特定Web服务器正在检查User-Agent
HTTP标头,并拒绝访问任何看起来不像普通浏览器的内容,以防止出现bot(这可能就是您正在编写的内容)。
您只需要在Java中将标头设置为请求的一部分即可使用。
设置标题的方式将取决于您进行连接的方式,但是如果您使用的是简单的URLConnection,则可以使用:
URLConnection conn = url.openConnection();conn.setRequestProperty("User-Agent", "Mozilla/5.0");
通常,“真实” User-Agent
包含许多额外信息,但是该网络服务器似乎只寻找基本的浏览器类型。
您可以通过wget
使用和不使用-U
User-Agent选项来证明这一点:
$ wget "http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regular"--2015-05-07 16:08:46-- http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regular2015-05-07 16:08:46 ERROR 403: Forbidden.$ wget -U "User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0" "http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regular"--2015-05-07 16:08:49-- http://www.kohls.com/search.jsp?search=jacket&submit-search=web-regularawaiting response... 200 OK...
android-Soap Throws java.io.IOException:HTTP请求失败,HTTP状态:500
实际上,我使用此代码访问了此Web服务FahrenheitToCelsius方法,得到了正确的响应,但是当我尝试访问Web服务时却得到了
java.io.IOException: HTTP request Failed, HTTP status: 500
错误,它指向transport.call(SOAP_ACTION,信封);
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//Use this to add parameters
request.addProperty("username",usr);
request.addProperty("password",pass);
request.addProperty("backOfficePartnerId",id);
//Declare the version of the SOAP request
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.setoutputSoapObject(request);
envelope.dotNet = true;
try {
HttpTransportSE transport = new HttpTransportSE(URL);
Log.i("bodyout", "" + envelope.bodyOut.toString());
transport.call(SOAP_ACTION, envelope);
// Get the SoapResult from the envelope body.
SoapObject result = (SoapObject)envelope.bodyIn;
System.out.println("result IN F TO C::"+result);
}catch(Exception e){
e.printstacktrace();
}
直到这里都得到了正确的答复.我调试并检查了这些值是否将正确的主体发送出去,对我来说,bodyin为null.
解决方法:
HTTP状态:500是服务器内部错误,它可能与.NET服务器端编码有关.
bug 日记之 -------java.io.IOException: Server returned HTTP response code: 400 for URL
报的错误
出事代码
出事原因
解决方案
总结
多看源码,我上面的实现方式并不好,如果返回的响应编码为 400 以下却又不是 200 的情况下 getErrorStream 会返回 null, 所以具体完美的解决方案,还得慢慢深究.
fastdfs文件上传报错Save file error:java.io.IOException: java.io.IOException: java.io.IOException: recv package size -1 != 10
这是什么原因?文件好像也能上传
Java HttpURLConnection.getInputStream但获取401 IOException
我正在用Java为CouchDB编写REST客户端。以下代码应该非常标准:
this.httpCnt.connect(); Map<String, String> responseHeaders = new HashMap<>(); int i = 1; while (true){ String headerKey = this.httpCnt.getHeaderFieldKey(i); if (headerKey == null) break; responseHeaders.put(headerKey, this.httpCnt.getHeaderField(i)); i++; } InputStreamReader reader = new InputStreamReader(this.httpCnt.getInputStream()); StringBuilder responseBuilder = new StringBuilder(); char[] buffer = new char[1024]; while(true){ int noCharRead = reader.read(buffer); if (noCharRead == -1){ reader.close(); break; } responseBuilder.append(buffer, 0, noCharRead); }
我想测试如果身份验证失败会发生什么。但是,如果身份验证失败,则在调用getInputStream
HttpURLConnection时,我会直接得到IOException,表示服务器响应401。我想,如果服务器响应了某些内容,无论成功还是失败,它都应该能够读取服务器返回的内容。而且我确定在这种情况下,服务器确实会在主体中返回一些文本,因为如果我GET
使用curl对服务器进行验证并且身份验证失败,我将获得一个JSON对象作为响应主体,其中包含一些错误消息。
即使是401,还有什么方法可以得到响应正文吗?
答案1
小编典典看到这个问题:
“
根据javadocs,HttpURLConnection.getErrorStream方法将返回InputStream,该InputStream可用于从错误条件(例如404)中检索数据。”
关于java.io.IOException:服务器返回URL的HTTP响应代码:403和http服务器返回状态码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于android-Soap Throws java.io.IOException:HTTP请求失败,HTTP状态:500、bug 日记之 -------java.io.IOException: Server returned HTTP response code: 400 for URL、fastdfs文件上传报错Save file error:java.io.IOException: java.io.IOException: java.io.IOException: recv package size -1 != 10、Java HttpURLConnection.getInputStream但获取401 IOException等相关知识的信息别忘了在本站进行查找喔。
本文标签: