2010-10-05 3 views
0

Я пытаюсь выследить, почему запрос POST из сценария C# не работает, когда тот же запрос отлично работает в Python. Я хочу, чтобы все данные, отправленные сценарием, и ответ от sever, отображались на экране, чтобы я мог разобраться, какая разница между тем, что отправляют сценарии C# и Python.Отображение всех HTTP-данных, отправленных на C# с использованием HttpWebRequest

В Python, я могу сделать это с помощью стандартной библиотеки httplib2 только с помощью:

httplib2.debuglevel = 1 

Это дает следующий результат (в качестве примера):

reply: 'HTTP/1.1 201 Created\r\n' 
header: Date: Tue, 05 Oct 2010 09:25:42 GMT 
header: Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch 
header: X-Powered-By: PHP/5.2.6-1+lenny9 
header: Location: http://example.org/api/2 
header: Content-Length: 0 
header: Content-Type: text/html 
send: 'GET /api/2 HTTP/1.1\r\nHost: example.org\r\naccept-encoding: gzip, deflate\r\nuser-agent: Python-httplib2/$Rev$\r\n\r\n' 

Есть ли способ, чтобы произвести аналогичный вывод в C# с использованием класса HttpWebRequest?

Я видел упоминание о Fiddler в другом вопросе, но я использую Linux, а Fiddler - только для Windows.

ответ

2

Вы можете закрутить через resp.Headers.AllKeys, а затем сбросить ключ и его значение, хотя иногда степень перевода происходит (наиболее очевидно, когда он делает авто-redirect- следующий).

Вы можете использовать отслеживание System.Net.

Вы можете использовать ethereal, который имеет версию Linux. Я не использую его для таких вещей в наши дни, как Fiddler действительно удобен для таких случаев, но я использовал в прошлом эфирное, и иногда видя, что на самом деле находится на проводе, а не то, что говорит код, - лучший способ (поскольку вы не зависите от возможного кода с ошибкой, чтобы сказать вам, является ли код ошибкой).

0

Да, вы можете и я использовал его раньше. Если вы используете C#, я предполагаю, что есть файл конфигурации, на который вы включили отслеживание System.Net. Я не уверен, что Mono имеет это - если вы используете Mono.

Посмотрите здесь: http://msdn.microsoft.com/en-us/library/ty48b824.aspx

+0

Я попытался включить трассировку, вы можете сделать это в Mono, используя #define TRACE в исходном файле и запустив исполняемый файл с помощью --trace. Единственная проблема заключается в том, что это показывает мне каждый вызов функции, в то время как я действительно хочу видеть HTTP-запрос/ответ (в обычном тексте, как если бы я построил их вручную). – pwaring

+0

Вам понадобится «Verbose». Не уверен, как это сделать в Mono. – Aliostad

Смежные вопросы