gpt4 book ai didi

java - 调用 httpconnect 时编码不起作用

转载 作者:行者123 更新时间:2023-12-01 17:54:12 26 4
gpt4 key购买 nike

我需要使用http连接调用服务get,响应包含阿拉伯字符,但是当我使用下面的代码调用它时

 try {

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");

InputStream in = new BufferedInputStream(conn.getInputStream());
response = IOUtils.toString(in, "UTF-8");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

响应是

1|U|����� ������|$2|L|���� �������|$3|S|���� 

我尝试了另一种不使用Commons-io的解决方案,但也不起作用

                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setConnectTimeout(5000);
connection.setRequestMethod("GET");
connection.connect();
int statusCode = connection.getResponseCode();
//Log.e("statusCode", "" + statusCode);
if (statusCode == 200) {
sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));

char[] tmp = new char[1024];
int l;
while((l = reader.read(tmp)) != -1) {
sb.append(tmp, 0, l);
}
//sb = buffer.toString();
}

connection.disconnect();
if (sb != null)
serverResponse = sb.toString();

我需要对网络服务进行任何更改吗???但是当我从浏览器调用它时,所有字符都清晰显示,没有问题有什么建议吗?

最佳答案

也许服务器没有使用 UTF-8,您的代码正在尝试使用 UTF-8 来解码数据,但这只有在服务器使用相同的编码时才有效。

浏览器可以正常工作,因为它可能正在使用 HTTP header “Content-Encoding”,该 header 应指示数据使用的编码。

关于java - 调用 httpconnect 时编码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46728389/

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