Tôi phải tìm một số đối tượng JSON từ máy chủ từ xa và tôi đang sử dụng hàm này hoạt động tốt ngoại trừ đôi khi dữ liệu lạ bị lấy là bởi vì nó đang sử dụng bộ mã ASCII để giải mã.Làm thế nào tôi có thể thay đổi mã hóa bảng mã trong phản hồi HTTP trong Java
Hãy tìm thấy bên dưới phương pháp thw mà tôi đang sử dụng
public HttpResponse call(String serviceURL,String serviceHost,String namespace,String methodName,String payloadKey, String payloadValue) throws ClientProtocolException,IOException,JSONException
{
HttpResponse response = null;
HttpContext HTTP_CONTEXT = new BasicHttpContext();
HTTP_CONTEXT.setAttribute(CoreProtocolPNames.USER_AGENT, "Mozilla/5.0");
HttpPost httppost = new HttpPost(serviceURL);
httppost.setHeader("User-Agent",Constants.USER_AGENT_BROWSER_FIREFOX);
httppost.setHeader("Accept", "application/json, text/javascript, */*");
httppost.setHeader("Accept-Language","en-US,en;q=0.8");
httppost.setHeader("Content-Encoding", "foo-1.0");
httppost.setHeader("Content-Type", "application/json; charset=UTF-8");
httppost.setHeader("X-Requested-With","XMLHttpRequest");
httppost.setHeader("Host",serviceHost);
httppost.setHeader("X-Foo-Target", String.format("%s.%s", namespace,methodName));
/*Making Payload*/
JSONObject objectForPayload = new JSONObject();
objectForPayload.put(payloadKey, payloadValue);
StringEntity stringentity = new StringEntity(objectForPayload.toString());
httppost.setEntity(stringentity);
response = client.execute(httppost);
return response;
}
Tất cả những tiêu đề mà tôi đang đi là chính xác và tôi đã xác minh cùng qua kiểm tra nguyên tố trong Google chrome hoặc Firebug Plugin nếu bạn đã quen thuộc với Mozilla .
Bây giờ vấn đề là hầu hết thời gian tôi nhận được dữ liệu có thể đọc được nhưng đôi khi tôi nhận được dữ liệu không đọc được.
Tôi đã gỡ lỗi bằng nhật thực và nhận thấy rằng bộ ký tự trong wrapEntity được hiển thị là "US-ASCII". Tôi đính kèm một jpg để tham khảo
Ai đó có thể vui lòng cho tôi biết làm cách nào tôi có thể thay đổi bộ ký tự từ ASCII sang UTF-8 của câu trả lời trước khi tôi làm response = client.execute(httppost);
. PS: Như bạn đã nhận thấy rằng tôi đang chuyển charset = utf-8 trong tiêu đề và tôi đã xác minh bằng firebug và google chrome mà tôi đang chuyển các tiêu đề chính xác.
Hãy phóng to để xem hình ảnh rõ ràng hơn
Cảm ơn trước
tôi đã thử nhưng không hoạt động cùng kết quả 'httppost.setHeader ("Accept-Encoding", "UTF-8"); ' – bourne