gpt4 book ai didi

java - 我怎样才能得到 HttpResponseException 背后的实际错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:00 25 4
gpt4 key购买 nike

我正在使用 Apache HttpComponents 客户端 POST 到返回 JSON 的服务器。问题是,如果服务器返回 400 错误,我似乎无法判断错误来自 Java(到目前为止不得不求助于数据包嗅探器 - 荒谬)。这是代码:

HttpClient httpclient = new DefaultHttpClient();
params.add(new BasicNameValuePair("format", "json"));
params.add(new BasicNameValuePair("foo", bar));

HttpPost httppost = new HttpPost(uri);
// this is how you set the body of the POST request
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));

String responseBody = "";
try {
// Create a response handler
ResponseHandler<String> responseHandler = new BasicResponseHandler();
responseBody = httpclient.execute(httppost, responseHandler);
} catch(HttpResponseException e) {
String error = "unknown error";
if (e.getStatusCode() == 400) {
// TODO responseBody and e.detailMessage are null here,
// even though packet sniffing may reveal a response like
// Transfer-Encoding: chunked
// Content-Type: application/json
//
// 42
// {"error": "You do not have permissions for this operation."}
error = new JSONObject(responseBody).getString("error"); // won't work
}
// e.getMessage() is ""
}

我做错了什么?必须有一种简单的方法来获取 400 错误的消息。这是基本的。

最佳答案

为什么要使用 BasicResponseHandler()?处理程序正在为您执行此操作。该处理程序只是一个示例,不应在实际代码中使用。

您应该编写自己的处理程序或在没有处理程序的情况下调用执行。

例如,

        HttpResponse response = httpClient.execute(request);
int statusCode = response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
responseBody = entity.getContent();

if (statusCode != 200) {
// responseBody will have the error response
}

关于java - 我怎样才能得到 HttpResponseException 背后的实际错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1490341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com