【问题标题】:Volley throwing error when I try to set a header当我尝试设置标题时排球抛出错误
【发布时间】:2021-01-22 00:57:40
【问题描述】:

当我将自定义标头添加到我的 Volley 字符串请求时,我收到一条错误消息 Unexpected char 0x0a at 18 in header value

这是我的代码。

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)

【问题讨论】:

    标签: java android xmlhttprequest android-volley


    【解决方案1】:

    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);

    【讨论】:

      【解决方案2】:

      0x0A 是 \n 换行符。确保您的标题中没有“\n”。

      我认为在你的标题中你有一些线条! 你可以用body发送代码!

      【讨论】:

        猜你喜欢
        • 2016-02-16
        • 2017-08-05
        • 2017-01-21
        • 1970-01-01
        • 2017-06-22
        • 1970-01-01
        • 2018-03-25
        • 2020-09-26
        • 1970-01-01
        相关资源
        最近更新 更多