GVKun编程网logo

java.io.IOException:服务器返回URL的HTTP响应代码:403(http服务器返回状态码)

8

关于java.io.IOException:服务器返回URL的HTTP响应代码:403和http服务器返回状态码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于android-SoapTh

关于java.io.IOException:服务器返回URL的HTTP响应代码:403http服务器返回状态码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于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服务器返回状态码)

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-AgentHTTP标头,并拒绝访问任何看起来不像普通浏览器的内容,以防止出现bot(这可能就是您正在编写的内容)。

您只需要在Java中将标头设置为请求的一部分即可使用。

设置标题的方式将取决于您进行连接的方式,但是如果您使用的是简单的URLConnection,则可以使用:

URLConnection conn = url.openConnection();conn.setRequestProperty("User-Agent", "Mozilla/5.0");

通常,“真实” User-Agent包含许多额外信息,但是该网络服务器似乎只寻找基本的浏览器类型。

您可以通过wget使用和不使用-UUser-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

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

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

fastdfs文件上传报错Save file error:java.io.IOException: java.io.IOException: java.io.IOException: recv package size -1 != 10

这是什么原因?文件好像也能上传

Java HttpURLConnection.getInputStream但获取401 IOException

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);    }

我想测试如果身份验证失败会发生什么。但是,如果身份验证失败,则在调用getInputStreamHttpURLConnection时,我会直接得到IOException,表示服务器响应401。我想,如果服务器响应了某些内容,无论成功还是失败,它都应该能够读取服务器返回的内容。而且我确定在这种情况下,服务器确实会在主体中返回一些文本,因为如果我GET使用curl对服务器进行验证并且身份验证失败,我将获得一个JSON对象作为响应主体,其中包含一些错误消息。

即使是401,还有什么方法可以得到响应正文吗?

答案1

小编典典

看到这个问题:


根据javadocs,HttpURLConnection.getErrorStream方法将返回InputStream,该InputStream可用于从错误条件(例如404)中检索数据。”

关于java.io.IOException:服务器返回URL的HTTP响应代码:403http服务器返回状态码的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于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等相关知识的信息别忘了在本站进行查找喔。

本文标签: