我使用 okhttp 从我的 android 代码发送拉丁字符作为 HTTP header
Builder builder=new Builder();
builder.url(myURL);
builder.addHeader("Original-Filename", "tête-à-tête.pdf");
但是,我得到 IllegalArgumentException: Unexpected char 0xea
at 1
我可以从 Postman 或使用 HttpsURLConnection
发送相同的 header 。此外,根据 HTTP1.1 documentation,该字符是一种异常(exception)的 header 格式。 .
那么,为什么okHttp不支持下面的字符呢?此外,是否有任何解决方法,无需通过执行 Base64 编码和解码在服务器端更改代码。
我正在使用 okttp 版本 4.4.0。另外,我已经通过了https://github.com/square/okhttp/issues/2016在任何人重复同样的事情之前。
最佳答案
对于任何寻找答案的人,我找到了答案。
我们可以使用addUnsafeNonAscii来解决这个问题。
下面是它的简单代码 fragment
Headers headers = new Headers.Builder()
.addUnsafeNonAscii("Original-Filename", "tête-à-tête.pdf")
.build();
通过这样做,我们可以避免服务器端更改,尽管从长远来看,建议在客户端使用 Base64 编码并在服务器端解码。
关于android - okhttp:IllegalArgumentException:意外的 char 0xea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60945415/