Esiste una classe simile a HttpUtility per codificare il contenuto di un'intestazione personalizzata? Idealmente, vorrei mantenere il contenuto leggibile.Come codificare intestazioni HTTP personalizzate in C#
risposta
Mayeb Questo? UrlEncode Function
Sto cercando un metodo che non esegue la codifica richiesta per l'URL ma considera solo i limiti specifici delle intestazioni HTTP – antonio
scusate la parte superiore della mia testa ma per l'oggetto di richiesta dovrebbe esserci un oggetto di intestazione che è possibile aggiungere a.
, ad esempio request.headers.add ("blah");
Questo non è azzeccato ma dovrebbe indirizzarti nella giusta direzione.
La domanda riguarda la codifica del valore dell'intestazione, non l'aggiunta dell'intestazione. –
È possibile utilizzare HttpEncoder.HeaderNameValueEncode Method in .NET Framework 4.0 e versioni successive.
Per le versioni precedenti di .NET Framework, è possibile ripristinare il proprio codificatore, utilizzando la logica annotato sulla pagina di riferimento HttpEncoder.HeaderNameValueEncode:
Tutti i personaggi il cui valore Unicode è inferiore a 32 caratteri ASCII , eccetto il carattere ASCII 9, sono codificati tramite URL in un formato di% NN dove i caratteri N rappresentano valori esadecimali.
Il carattere ASCII 9 (il carattere di tabulazione orizzontale) non è codificato tramite URL.
Il carattere ASCII 127 è codificato come% 7F.
Tutti gli altri caratteri non sono codificati.
Aggiornamento:
Come OliverBock sottolineare il metodo HttpEncoder.HeaderNameValueEncode è protetto e interno. Sono andato a aprire il progetto Mono fonte e ho trovato l'implementazione del mono
void HeaderNameValueEncode (string headerName, string headerValue, out string encodedHeaderName, out string encodedHeaderValue)
{
if (String.IsNullOrEmpty (headerName))
encodedHeaderName = headerName;
else
encodedHeaderName = EncodeHeaderString (headerName);
if (String.IsNullOrEmpty (headerValue))
encodedHeaderValue = headerValue;
else
encodedHeaderValue = EncodeHeaderString (headerValue);
}
static void StringBuilderAppend (string s, ref StringBuilder sb)
{
if (sb == null)
sb = new StringBuilder (s);
else
sb.Append (s);
}
static string EncodeHeaderString (string input)
{
StringBuilder sb = null;
for (int i = 0; i < input.Length; i++) {
char ch = input [i];
if ((ch < 32 && ch != 9) || ch == 127)
StringBuilderAppend (String.Format ("%{0:x2}", (int)ch), ref sb);
}
if (sb != null)
return sb.ToString();
return input;
}
Cordiali saluti
[qui] (https://github.com/mono/mono/blob/master/mcs/class/System.Web/System.Web.Util/HttpEncoder.cs)
HeaderNameValueEncode() è protetto + interno. –
@OliverBock hai ragione, aggiornato il post. – liuhongbo
Purtroppo né questa versione né la versione .NET (vista tramite Reflector) si preoccupano di codificare correttamente i caratteri '%' già presenti nei dati. –
Questo fa lo stesso lavoro di HeaderNameValueEncode(), ma sarà anche codificare% caratteri in modo che l'intestazione possa essere decodificata in modo affidabile in seguito.
static string EncodeHeaderValue(string value)
{
return Regex.Replace(value, @"[\u0000-\u0008\u000a-\u001f%\u007f]", (m) => "%"+((int)m.Value[0]).ToString("x2"));
}
static string DecodeHeaderValue(string encoded)
{
return Regex.Replace(encoded, @"%([0-9a-f]{2})", (m) => new String((char)Convert.ToInt32(m.Groups[1].Value, 16), 1), RegexOptions.IgnoreCase);
}
Per me ha aiutato Uri.EscapeDataString (HeaderValue)
- 1. Intestazioni richieste HTTP personalizzate in HTML
- 2. SDWebImage e impostazione di intestazioni HTTP personalizzate?
- 3. Aggiunta di intestazioni HTTP personalizzate utilizzando JavaScript
- 4. Passa intestazioni HTTP personalizzate a richieste RESTful
- 5. ServiceStack JsonServiceClient - Intestazioni HTTP personalizzate non inviate
- 6. Come impostare intestazioni http personalizzate quando si modifica iframe src?
- 7. Aprire la richiesta in Safari con intestazioni HTTP personalizzate
- 8. Intestazioni personalizzate PHP cURL
- 9. Base64 intestazioni codificare HTTP_AUTHORIZATION DRF
- 10. È possibile impostare intestazioni HTTP personalizzate nella WebView
- 11. Come si aggiungono intestazioni HTTP personalizzate alle schede personalizzate di Chrome?
- 12. REST: intestazioni HTTP personalizzate rispetto ai parametri URL
- 13. AngularJS $ intestazioni personalizzate risorsa
- 14. Aggiungi intestazioni personalizzate utilizzando HttpWebRequest
- 15. Come ottenere le intestazioni HTTP
- 16. Intestazioni personalizzate su Amazon S3
- 17. intestazioni personalizzate tipo bloodhound bloodhound
- 18. Come codificare il nome file UTF8 per le intestazioni HTTP? (Python, Django)
- 19. Come si impostano le intestazioni personalizzate globali in Angular2?
- 20. Invio di intestazioni personalizzate attraverso RSpec
- 21. Come rimuovere intestazioni HTTP specifiche in Javascript
- 22. Char SP in intestazioni HTTP?
- 23. Intestazioni HTTP multilinea Confusione
- 24. Come impostare intestazioni HTTP personalizzate per richieste effettuate da un WKWebView
- 25. Come aprire un url usando javascript e impostare intestazioni HTTP personalizzate per la richiesta?
- 26. Come aggiungere intestazioni di sapone personalizzate in wcf?
- 27. Comprimere le intestazioni Http
- 28. Leggi HTTP Post intestazioni
- 29. Intestazioni HTTP raw Puri
- 30. Cneonction and nnCoection Intestazioni HTTP
Che cosa vuoi dire? – SLaks