如何解决当我尝试设置标题时,Volley抛出错误
在向Unexpected char 0x0a at 18 in header value
字符串请求中添加自定义标头时,我收到一条错误消息Volley
。
这是我的代码。
stringRequest = new StringRequest(Request.Method.GET,URL,string -> {
try {
JSONObject jsonObject = new JSONObject(string);
Log.d("TAG",jsonObject.toString());
} catch (Exception e) {
}
},error -> {
}){
@Override
public Map<String,String> getHeaders() {
Map<String,String> params = new HashMap<>();
params.put("MIME Type","application/x-www-form-urlencoded; charset=UTF-8");
params.put("compiler","c");
params.put("code",code);
params.put("input","");
return params;
}
};
我得到的错误。
2020-10-07 10:52:06.869 32119-32232/com.my.app E/Volley: [2415] NetworkDispatcher.processRequest: Unhandled exception java.lang.IllegalArgumentException: Unexpected char 0x0a at 18 in header value: #include <stdio.h>
int main()
{
int foo = 0;
printf("Hello world");
return foo;
}
java.lang.IllegalArgumentException: Unexpected char 0x0a at 18 in header value: #include <stdio.h>
int main()
{
int foo = 0;
printf("Hello world");
return foo;
}
at com.android.okhttp.Headers$Builder.checkNameAndValue(Headers.java:319)
at com.android.okhttp.Headers$Builder.add(Headers.java:250)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.addRequestProperty(HttpURLConnectionImpl.java:600)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.addRequestProperty(DelegatingHttpsURLConnection.java:187)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.addRequestProperty(HttpsURLConnectionImpl.java:30)
at com.android.volley.toolbox.HurlStack.executeRequest(HurlStack.java:95)
at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:131)
at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:120)
at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:87)
解决方法
0x0A是\ n换行符。确保标题中没有“ \ n”。
我认为您的标题中有一行! 您可以随身发送代码!
,从this answer解决了它
•步骤1:删除了params.put("MIME Type","application/x-www-form-urlencoded; charset=UTF-8");
•步骤2:将params.put("code",code);
替换为params.put("code",Base64.encodeToString(code.getBytes(),Base64.NO_WRAP));
更新
•我已从代码中删除了步骤2,因为它导致了我的问题。所以现在看起来像params.put("code",code);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。