我在Grails中使用HTTPBuilder时遇到问题。
代码是这样的。
def http = new HTTPBuilder("theURL")
http.request(method, ContentType.JSON) {
uri.path = "theURI"
headers.'Authorization' = "OAuth $accessToken"
headers.'Accept' = "application/json"
headers.'content-type' = "application/json;charset=utf-8"
response.success = { resp, json ->
result = json
}
}
return result
现在响应是带有“CobroN 1234”的JSON,但我需要“CobroNº1234”
我用curl尝试了这个并且响应很好“CobroNº1234”,这让我觉得问题是HTTPBuilder而不是我的API响应请求。
我认为这是响应编码的问题。
答案 0 :(得分:1)
http.encoders.charset = Charsets.UTF_8
答案 1 :(得分:0)
试试这个:
headers.'content-type' = "application/JSON;charset=UTF-8" //capitalized
要么尝试这个:
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
答案 2 :(得分:0)
尝试在您的' http'之后添加此内容。声明:
http.encoderRegistry = new EncoderRegistry( charset: 'utf-8' )
答案 3 :(得分:0)
如果您要发送的内容需要使用UTF-8编码,或者您收到的内容需要使用UTF-8阅读,我无法关注。
我在使用UTF-8发送内容时遇到问题,这就是我所做的。
http.request(Method.PUT) { request ->
// set headers here
request.entity = new StringEntity(json.toString(), "UTF-8")
}
我正在将net.sf.json.JSONObject
转换为String
,以便将其作为PUT
来电的正文传递。我正在使用StringEntity
,之前我没有在StringEntity
上设置编码,但是有一个构造函数需要编码。现在我在那里设置了“UTF-8”,它正在工作。