OkHttp3 java.lang.IllegalArgumentException: неожиданный символ 0x2019 - PullRequest
0 голосов
/ 27 мая 2019

Почему OKHttp запрещает отправку некоторых печатаемых символов в качестве заголовка? Я пишу приложения, которые публикуют заголовок http. Приложения зависали, потому что правильный одиночный кавычка .

Это трассировка стека:

Fatal Exception: java.lang.IllegalArgumentException: Unexpected char 0x2019 at 358 in my-header value: test’s 
       at okhttp3.Headers.checkValue(Headers.java:272)
       at okhttp3.Headers$Builder.add(Headers.java:312)
       at okhttp3.Request$Builder.addHeader(Request.java:196)
...

Это исходный код OkHttp , который выдает исключение:

internal fun checkValue(value: String, name: String) {
      for (i in 0 until value.length) {
        val c = value[i]
        require(c == '\t' || c in '\u0020'..'\u007e') {
          format("Unexpected char %#04x at %d in %s value: %s", c.toInt(), i, name, value)
      }
   }
}

Видя этот исходный код, это стандарт, разрешающий только символ в этом диапазоне require(c == '\t' || c in '\u0020'..'\u007e') для заголовка http?

1 Ответ

0 голосов
/ 30 мая 2019

Пожалуйста, отметьте это .

Из-за того, что в Okhttp существует метод checkValue, ваш заголовок не может содержать недопустимые данные.

Так что вам нужно закодировать значение my-header.

...