7
votes

WebException.response.geteResponsestream () limité à 65536 caractères

J'essaie de récupérer le code HTML à partir d'une page Web à l'aide de httpwebrequest et httpwebreffonse. XXX

L'objet de réponse a une valeur de longueur de contenu de 106142. Lorsque je regarde l'objet de flux, il a un Longueur de 65536. Lors de la lecture du ruisseau avec un flux de flux de diffusion à l'aide de ReadToend (), seuls les premiers caractères 65536 sont retournés.

Comment puis-je obtenir le code entier?

Modifier :

à l'aide du segment de code suivant: xxx

ex.response.contentlength = 106142

ex.responstream (). Longueur = 65536

flux.length = 65536

PageOoutPut. Longueur = 65534 (en raison de la garniture)

et oui, le code est effectivement tronqué.


4 commentaires

Avez-vous regardé la chaîne de résultats? On dirait-il qu'il manque quelque chose qui manque? Selon le codage utilisé, la longueur d'octets (en octets) peut ne pas correspondre au nombre de caractères renvoyés de Readtoend () (c'est-à-dire s'il utilise deux octets par caractère, etc.)


Merci d'avoir posté le problème réel. Donc, le problème est que le corps de réponse d'une exception WebException est tronqué.


@John: Oui, je suis d'accord que ma question aurait pu être plus claire.


Pour les futurs visiteurs: réellement résoudre ce problème plutôt que de l'espoir que cela ne vous arrive pas; S'il vous plaît voir Stackoverflow.com/Questtions/4918107/...


3 Réponses :


1
votes

Readtoend ne fait spécifiquement que cela, il se lit jusqu'à la fin du flux. Je vérifierais pour vous assurer que vous étiez réellement envoyé la réponse attendue.


0 commentaires

-1
votes

Il semble y avoir un problème lorsque vous appelez la méthode GetResponsestream () sur HTTPWEBRESPONNONS renvoyée à l'exception. Tout fonctionne comme prévu quand il n'y a pas d'exception.

Je voulais obtenir le code HTML à partir de l'erreur renvoyée par le serveur.

Je suppose que je devrai espérer que l'erreur ne dépasse pas 65536 caractères ...


0 commentaires

7
votes

Vous pouvez trouver une réponse dans ce sujet dans Système. NET.HTTPWEBRESPONSE.GETRESPONSESTREAM () Retourne le corps tronqué dans WebException

Vous devez gérer le httpwebrequest objet et modifier par défautMAximumimumimumimumerResponselength Propriété. Par exemple: xxx


0 commentaires