在Grails中编码utf-8的HTTPBuilder
我在Grails中使用HTTPBuilder时遇到问题 代码是这样的在Grails中编码utf-8的HTTPBuilder,grails,utf-8,Grails,Utf 8,我在Grails中使用HTTPBuilder时遇到问题 代码是这样的 def http = new HTTPBuilder("theURL") http.request(method, ContentType.JSON) { uri.path = "theURI" headers.'Authorization' = "OAuth $accessToken" headers.'Accept' = "application/json" headers.'cont
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”的JSON�� 1234“但我需要1234号科布罗”
我用curl尝试了这一点,响应很好“Cobro Nº1234”,这让我认为问题在于HTTPBuilder,而不是响应请求的API
我认为这是响应编码的问题。尝试以下方法:
headers.'content-type' = "application/JSON;charset=UTF-8" //capitalized
或者,尝试以下方法:
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
尝试在“http”声明后添加此内容:
http.encoderRegistry = new EncoderRegistry( charset: 'utf-8' )
我无法理解您发送的内容是否需要使用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
转换为字符串
,以便将其作为PUT
调用的主体传递。我正在使用StringEntity
,之前我没有在StringEntity
上设置编码,但是有一个构造函数接受编码。现在我在那里设置了“UTF-8”,它就开始工作了。您正在访问的端点是公共的?是salesforce中带有身份验证的API(但我在代码段中删除了这部分代码)。您是否尝试将内容类型设置为应用程序/json;charset=utf-8
?我尝试过,但问题仍然存在“Cobro N”�� 1234“Accept Charset
也必须在标题中设置为UTF-8
。问题仍然存在。虽然此代码片段可以解决问题,但确实有助于提高文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!
http.request(Method.PUT) { request ->
// set headers here
request.entity = new StringEntity(json.toString(), "UTF-8")
}