【问题标题】:java android HttpURLConnection how to get response 401java android HttpURLConnection如何获得响应401
【发布时间】:2012-07-20 14:11:42
【问题描述】:

我正在制作一个 android 应用程序,它将使用 xauth 身份验证连接到 Web 服务器。我的问题是如果服务器返回 401 导致 java 异常,我无法得到响应。

我需要那个回复才能知道我做错了什么。

首先,HttpURLConnection 适合这种东西吗 其次,我怎样才能得到响应?

URL u_rl = new URL(url);
    final HttpURLConnection connection =
        (HttpURLConnection) u_rl.openConnection();

    connection.setRequestMethod(method);

    if (authorization != null) {
        connection.setRequestProperty("Authorization", authorization);
    }
    final byte[] body = parameters.getBytes();

        connection.setRequestProperty(
            "Content-Length", Integer.toString(body.length));
        connection.setDoOutput(true);
        connection.connect();
        final OutputStream output = connection.getOutputStream();
        output.write(body);
        output.flush();
        System.out.println(connection.getResponseCode());
        if (connection.getResponseCode() != 200) {
            result.put("error", connection.getResponseCode()+"");
            return null;
        }

        String out = IOUtils.toString(connection.getInputStream());

我知道为什么我得到 400 或其他响应代码,问题是用户不知道为什么。服务器返回 JSON 错误,即使响应代码不是 200,我也想获取该 JSON 代码

【问题讨论】:

  • 你必须发布一些代码?
  • 如果我的以下回答对您有帮助,请接受我的回答并投票给我,我们将不胜感激。谢谢:)
  • 已发布代码,但我认为它与我的问题没有任何共同点?

标签: java android httpurlconnection


【解决方案1】:

除非你提供它,否则很难说出你的代码中的错误我宁愿建议你使用这个肯定会帮助你的答案。

 InputStream retrieveStream(String url) {

        DefaultHttpClient client = new DefaultHttpClient();

        HttpGet getRequest = new HttpGet(url);

        try {

            HttpResponse getResponse = client.execute(getRequest);
            final int statusCode = getResponse.getStatusLine().getStatusCode();

            if (statusCode != HttpStatus.SC_OK) {
                Log.w(getClass().getSimpleName(), "Error " + statusCode
                        + " for URL " + url);
                return null;
            }

            HttpEntity getResponseEntity = getResponse.getEntity();
            return getResponseEntity.getContent();

        } catch (IOException e) {
            getRequest.abort();
            Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
        }

        return null;

    }

并使用此代码将输入流转换为字符串可读数据格式。

BufferedReader r = new BufferedReader(new InputStreamReader(retrieveStream("YOU URL")));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
    total.append(line);
}

谢谢:)

【讨论】:

  • 它没有解决我的问题,因为在: if (statusCode != HttpStatus.SC_OK) {Log.w(getClass().getSimpleName(), "Error " + statusCode + " for URL " +网址); return null;} 我仍然无法从服务器获得 JSON 响应
  • 您能否提供您所访问的网址。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
相关资源
最近更新 更多