繁体   English   中英

在Java httpurlconnection请求中获取确切的HTTP Web响应

getting exact http web response in java httpurlconnection request

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我对Java还是有点陌生​​,我遇到的麻烦是在访问api的应用程序中处理错误响应。 我知道在.NET中,您可以读取代码,内部异常和错误响应的其他详细信息,但不确定在Java中如何执行此操作。 以以下示例为例:我正在向facebook graph API发出一般请求,并且在发生错误响应的情况下未得到预期的响应:

        HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
        conn.setRequestMethod("GET");
        conn.setUseCaches(false);
        conn.setRequestProperty("accept-charset", "UTF-8");
        conn.setRequestProperty("content-type", 
       "application/x-www-form-urlencoded");

        //InputStream urlInputStream = conn.getInputStream();

        BufferedReader inSt = new BufferedReader(
          new InputStreamReader(conn.getInputStream()));
        StringBuffer response = new StringBuffer();
        String inputData;

        while((inputData = inSt.readLine()) != null) {

            response.append(inputData);
        }
          ...
            } catch (MalformedURLException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
             responseCode = 0;

    } catch (Exception ex) {
        // TODO Auto-generated catch block
        ex.printStackTrace();
        responseCode = 0;
        ResponseText = ex.getMessage().toString();
    }

我以为printStackTrace将提供详细的错误消息和代码,但事实并非如此,然后在某些情况下getMessage可以工作。

https://graph.facebook.com/brahmaria

实际回应:

{
   "error": {
  "message": "Unsupported get request. Please read the 
 Graph API documentation at https://developers.facebook.com/docs/graph-api",
  "type": "GraphMethodException",
  "code": 100
 }
}

上面的调用从ex.getMessage返回错误和以下详细信息

java.io.IOException: Server returned HTTP response code: 400 for 
 URL:  https://graph.facebook.com/brahmaria

但是下一次调用不会返回详细消息:

https://graph.facebook.com/zafdsdkdjdsfs

实际回应:

{
  "error": {
  "message": "(#803) Some of the aliases you requested do not 
   exist:   zafdsdkdjdsfs",
  "type": "OAuthException",
  "code": 803
  }
}

返回以下内容,不带任何代码:

https://graph.facebook.com/zafdsdkdjdsfs

我需要捕获带有错误代码的实际响应,以便正确处理异常和用户响应。 任何建议表示赞赏。

1 个回复

您不能使用其用户名作为基础来请求用户数据,该用户名在Facebook的Graph版本2.11中不再起作用。

根据Facebook API文档,您需要访问令牌并使用用户ID代替用户名

graph.facebook.com/<user-id>/<resource|optional>&access_token=token
3 如何从WOPI LOCK请求中获取确切的锁定字符串

如何从wopi客户端查找锁定字符串,因为X-Wopi-Lock包含表示json的长字符串,如下所示。 在对我得到的同一文件的第一锁定请求中, { “S”: “899d5d58-d6bd-4fed-bd8c-e8450e3c221f”, “F”:4} 并且我收到另一个请求锁 ...

2016-07-07 11:46:55 0 147   ms-wopi
5 使用Java多线程时如何获取http请求的确切响应时间

我正在构建一个程序,该程序试图模拟真实的客户请求以衡量服务的“质量”。 我正在尝试衡量可接受的最大客户数量。 换句话说,我的网络服务器可以同时服务多少个客户端。 我使用每个请求的响应时间和重载次数来衡量“质量”。 然后,我有1万个线程在同时执行,但只是在随机时间内执行请求(以避免同时发送 ...

6 HTTP响应->获取确切的字节数,然后关闭连接

我遇到了一个愚蠢的问题:我需要获取一定数量的字节,然后关闭连接。 我发现我可以从标头中提取“内容长度”,并使用该长度确定在断开连接之前应该获得多少字节。 但是,看来我做错了。 它仅获得40个字节,而不是2428个字节(应如此)。 也许我没有正确使用fgets()? 这是代码: ...

2012-04-11 20:08:00 1 452   php/ http
7 使用HttpURLConnection的JAVA中的POST获得HTTP响应代码400

我在建立HTTP连接和使用Java中的API方面还很陌生,所以我不确定问题出在哪里。 当我发送POST连接请求以将JSON格式的文本字符串发送到另一端时,我收到一条错误以及400响应代码。 当我查找该代码时,似乎我的连接格式不正确。 下面的代码以及错误消息。 请帮忙! 谢谢! ...

8 TCPServer:在ruby中显示确切的请求

我正在尝试查看确切的请求。 潜在的标头,例如IP,mac地址等。 服务器端代码: 输出为#&lt;TCPSocket:fd 8&gt; ,但应显示确切的请求 ...

2014-05-10 13:08:59 1 61   ruby
9 使用HttpURLConnection的多个Http请求和响应

我所在的时区下午好。 我正在开发一个非常简单的http bot。 我正在使用javax.net.ssl.HttpsURLConnection类,并且我必须发出多个请求。 代码片段: 总结上面的代码,首先我执行一个没有任何有效负载的请求,并且能够看到来自服务器的正确响应,但是问题 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM