使用JerseyClientBuilder.createClient()发起http请求,请求方式是get请求,返回值中的中文全是问号应该怎么办?
时间: 2024-01-24 16:19:11 浏览: 73
这种情况通常是由于字符编码不一致导致的。你可以在请求中设置Accept-Charset头部参数来指定接收的字符集编码,例如:
```java
Client client = JerseyClientBuilder.createClient();
WebTarget target = client.target("http://example.com");
Response response = target.request().header("Accept-Charset", "UTF-8").get();
String result = response.readEntity(String.class);
```
在上面的代码中,我们通过设置Accept-Charset头部参数为UTF-8,来指定接收的字符集编码为UTF-8。这样就能正确地显示中文字符了。如果还有问题,请检查一下请求返回的HTTP头部信息中是否包含Content-Type参数,并且该参数中是否包含charset参数。如果没有指定charset参数,也可能导致中文乱码的问题。
相关问题
使用JerseyClientBuilder.createClient()发起http请求,返回值中的中文全是问号应该怎么办?
这种情况通常是因为没有正确设置编码导致的。在使用JerseyClientBuilder.createClient()发起http请求时,你需要设置字符集编码,比如:
```java
Client client = JerseyClientBuilder.createClient();
WebTarget target = client.target("http://example.com/api");
String response = target.request().accept(MediaType.APPLICATION_JSON).get(String.class);
response = new String(response.getBytes("ISO-8859-1"), "UTF-8");
```
在这个例子中,我们使用了ISO-8859-1编码将响应转换为字节流,然后再将字节流转换为UTF-8编码的字符串。这样就可以正确地处理中文字符了。你可以根据具体情况调整编码格式。
delphi如何通过http请求获取json返回值
在 Delphi 中可以使用 Indy 组件库中的 TIdHTTP 组件来发送 HTTP 请求并获取返回值。以下是一个获取 JSON 返回值的示例代码:
```delphi
uses
IdHTTP, System.JSON;
function GetJsonValueFromUrl(const AUrl: string; const AName: string): string;
var
IdHTTP: TIdHTTP;
JsonResponse: TJSONObject;
JsonValue: TJSONValue;
begin
IdHTTP := TIdHTTP.Create;
try
JsonResponse := TJSONObject.ParseJSONValue(IdHTTP.Get(AUrl), False) as TJSONObject;
try
JsonValue := JsonResponse.GetValue(AName);
if Assigned(JsonValue) then
Result := JsonValue.Value
else
Result := '';
finally
JsonResponse.Free;
end;
finally
IdHTTP.Free;
end;
end;
```
其中,`AUrl` 是请求的 URL,`AName` 是要获取的 JSON 属性名。该函数会返回该属性的字符串值。注意,该代码需要使用 System.JSON 单元,因此需要在 uses 中添加该单元。
阅读全文