HttpClient: L'uri de la chaîne est trop longue

Suivants tentent d'envoyer des données à un service web qui génère des fichiers PDF, PDF fusée (qui est impressionnant par la voie).

Je reçois le message d'erreur URI non Valide: L'uri de la chaîne est trop longue
Pourquoi serait-on imposer une limite arbitraire sur POSTed de données?

using (var client = new HttpClient())
{
    //Build the conversion options
    var options = new Dictionary<string, string>
    {
        { "value", html },
        { "apikey", ConfigurationManager.AppSettings["pdf:key"] },
        { "MarginLeft", "10" },
        { "MarginRight", "10" }
    };

    //THIS LINE RAISES THE EXCEPTION
    var content = new FormUrlEncodedContent(options);

    var response = await client.PostAsync("https://api.html2pdfrocket.com/pdf", content);
    var result = await response.Content.ReadAsByteArrayAsync();
    return result;
}

Je reçois ce ridicule erreur.

 {System.UriFormatException: Invalid URI: The Uri string is too long.
   at System.UriHelper.EscapeString
   at System.Uri.EscapeDataString
   at System.Net.Http.FormUrlEncodedContent.Encode
   at System.Net.Http.FormUrlEncodedContent.GetContentByteArray

Cela me rappelle de 640k devrait être suffisant... je veux dire vraiment?

Avec un poste peut inclure le contenu dans le message http au lieu de l'URI. Un uri a une longueur max de 2083 caractères.
aaah, ça fait du sens, comment?
Pourquoi utiliser un service web pour faire des PDF HTML si vous pouvez le faire vous-même avec un accès gratuit à la bibliothèque?
Voir ce donc, la question, dans ce cas, ils l'envoient en json dans le message http. Il n'y a pas de limitation sur la longueur des données lorsqu'il est fait de cette façon. Créer une chaîne json à l'aide de JsonConvert.SerializeObject et ensuite l'envoyer comme une chaîne de caractères contenu à l'aide de StringContent et l'envoyer.
Suis-je donc raison de dire qu'il n'est pas construit en équivalent dans HttpClient pour UploadValues("https://api.html2pdfrocket.com/pdf", options) dans le WebClient classe?

OriginalL'auteur Jim | 2016-07-18