代码之家  ›  专栏  ›  技术社区  ›  Oren A

获取请求文本

c#
  •  2
  • Oren A  · 技术社区  · 14 年前

    HttpWebRequest :

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(methodUrl.ToString());
    req.Method = "POST";
    string postData = Serializer.Serialize(GetAllFields());
    req.ContentType = @"application/json; charset=utf-8";
    req.Accept = @"application/json; charset=utf-8";  
    ...
    

    我希望在发送之前看到实际的原始请求。
    ( req.ToString() 只会给 req
    我得出结论我应该用 Stream 不知怎么回事,但我不明白。。

    如何在发送web请求之前获取其头和正文?

    我最终想要的是:

    string requestAsText= //some method that will give me the whole post text.
    

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Aliostad    14 年前

    将这些添加到配置文件中,这将几乎转储每个通信(这将保存到网络日志文件):

    <system.diagnostics>
        <sources>
          <source name="System.Net" tracemode="includehex" maxdatasize="1024">
            <listeners>
              <add name="System.Net"/>
            </listeners>
          </source>
          <source name="System.Net.Sockets">
            <listeners>
              <add name="System.Net"/>
            </listeners>
          </source>
          <source name="System.Net.Cache">
            <listeners>
              <add name="System.Net"/>
            </listeners>
          </source>
        </sources>
        <switches>
          <add name="System.Net" value="Verbose"/>
          <add name="System.Net.Sockets" value="Verbose"/>
          <add name="System.Net.Cache" value="Verbose"/>
        </switches>
        <sharedListeners>
          <add name="System.Net"
            type="System.Diagnostics.TextWriterTraceListener"
            initializeData="network.log"
          />
        </sharedListeners>
        <trace autoflush="true"/>
      </system.diagnostics>
    

    http://msdn.microsoft.com/en-us/library/ty48b824.aspx