c # ASHX addHeader, вызывающий ошибку

Как подразумевается вышеупомянутой библиотекой, вы можете выполнять сетевые вызовы асинхронно, то есть не в основном потоке, и поэтому мы фактически используем asynctask, чтобы избежать блокировки основного потока.

Итак, если вы используете выше библиотеки, тогда нет необходимости использовать Asynctask, и я уверен, что вы никогда не получите NetworkConnectionOnMainThreadException. Надеюсь, это поможет.

0
задан Chor Wai Chun 13 July 2018 в 08:46
поделиться

1 ответ

Пробел не является допустимым символом в заголовке. HTTP определен RFC 7230 .

Синтаксис поля заголовка определен в разделе 3.2. Поля заголовка

   Each header field consists of a case-insensitive field name followed
   by a colon (":"), optional leading whitespace, the field value, and
   optional trailing whitespace.

     header-field   = field-name ":" OWS field-value OWS

     field-name     = token
     field-value    = *( field-content / obs-fold )
     field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]
     field-vchar    = VCHAR / obs-text

     obs-fold       = CRLF 1*( SP / HTAB )
                    ; obsolete line folding
                    ; see Section 3.2.4

Таким образом, имя поля является токеном. Токены определены в 3.2.6. Компоненты значения поля

   Most HTTP header field values are defined using common syntax
   components (token, quoted-string, and comment) separated by
   whitespace or specific delimiting characters.  Delimiters are chosen
   from the set of US-ASCII visual characters not allowed in a token
   (DQUOTE and "(),/:;?@[\]{}").

     token          = 1*tchar

     tchar          = "!" / "#" / "$" / "%" / "&" / "'" / "*"
                    / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
                    / DIGIT / ALPHA
                    ; any VCHAR, except delimiters

Последний фрагмент представлен в 1.2. Обозначение синтаксиса

   The following core rules are included by reference, as defined in
   [RFC5234], Appendix B.1: ALPHA (letters), CR (carriage return), CRLF
   (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double quote),
   HEXDIG (hexadecimal 0-9/A-F/a-f), HTAB (horizontal tab), LF (line
   feed), OCTET (any 8-bit sequence of data), SP (space), and VCHAR (any
   visible [USASCII] character).

Таким образом, пробелы не допускаются в имени заголовка.

1
ответ дан Martin Liversage 17 August 2018 в 13:19
поделиться
  • 1
    Просто вау, большое спасибо за это очень подробное объяснение! знак равно – Chor Wai Chun 13 July 2018 в 09:59
Другие вопросы по тегам:

Похожие вопросы: