2012-09-01 17 views
5

Oggi ho riscontrato un problema con la codifica di UserAgent quando ho provato a utilizzare HttpWebRequest per pubblicare una richiesta.Come modificare la codifica di UserAgent in HttpWebRequest?

Normalmente, UserAgent è costituito da lettere latine e segni di punteggiatura. Tuttavia, ho bisogno di simulare le richieste web di un'app iOS la cui UA contiene caratteri Unicode (in particolare cinesi).

Utilizzando Fiddler per ottenere la richiesta non elaborata, ho rilevato che l'app ha utilizzato la codifica Unicode utilizzata nella sua UA. Non ho potuto postarlo in C#; Ho ricevuto questo errore:

You may not try to send Unicode in UserAgent. But it is really important for my project. Now I can simulate the request of App without the bytes of UA.

Come posso modificare la codifica UA?

risposta

2

in base agli standard (rfc 2616 (http/1.1), sec 2.2, 3.8. 14.43 e rfc 2047 (mime, part 3), sec 4, 5), non è possibile utilizzare alcuna altra codifica ma iso-8859-1 per qualsiasi campo di intestazione http come user-agent.

tuttavia, è possibile applicare lo schema di codifica di rfc 2047 per mappare la stringa unicode su 8859-1 - stringhe; in poche parole, si avvolge il testo con un identificatore di set di caratteri e si sostituiscono i codepoint di unicode con i valori esadecimali della sequenza di ottetti nella rispettiva codifica.

esempio:

User-Agent: Million-€-Browser diventa User-Agent: =?utf-8?q?Million-=e2=82=ac-Browser?=, con e2 82 ac essendo l'ottetto sequenza utf-8 del simbolo dell'euro.

Problemi correlati