sam*_*sam 11 .net httpwebrequest
我想从HttpWebRequest继承的自定义类中读取请求流,HttpWebRequest并且我试图在不同的阶段读取请求流,但仍不确定如何在类中实现.
此自定义HttpWebRequest用于序列化soap消息,我想知道以字符串格式发送了什么请求.我也实现了自定义HttpRequestCreator,HttpWebResponse但仍然找不到我可以读取请求流的地方/阶段.
如果我输出所有MemoryStream内容然后复制内容以请求流,任何人都知道我可以在哪个阶段做到这一点?在构造函数中BeginGetRequestStream,EndGetRequestStream或GetRequestStream?
Che*_*eso 13
如果存在错误返回代码,如404,503,401等,将导致"流不可读".您可能还没有检查过您的状态代码.
如果内容是文本,这样的东西有效:
public string DownloadString(string uri, out int status)
{
string result= null;
status = 0;
HttpWebResponse response= null;
try
{
HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(uri);
// augment the request here: headers (Referer, User-Agent, etc)
// CookieContainer, Accept, etc.
response= (HttpWebResponse) request.GetResponse();
Encoding responseEncoding = Encoding.GetEncoding(response.CharacterSet);
using (StreamReader sr = new StreamReader(response.GetResponseStream(), responseEncoding))
{
result = sr.ReadToEnd();
}
status = (int) response.StatusCode;
}
catch (WebException wexc1)
{
// any statusCode other than 200 gets caught here
if(wexc1.Status == WebExceptionStatus.ProtocolError)
{
// can also get the decription:
// ((HttpWebResponse)wexc1.Response).StatusDescription;
status = (int) ((HttpWebResponse)wexc1.Response).StatusCode;
}
}
finally
{
if (response!= null)
response.Close();
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
SLa*_*aks 10
你的问题不清楚.
如果你想读取HttpWebRequest的请求后,其他代码写入到流(POST请求)流,这是不可能的.(流直接发送到服务器,不存储在内存中)
相反,您需要公开自己的MemoryStream,然后在准备发送请求时将其写入HttpWebRequest的请求流.
| 归档时间: |
|
| 查看次数: |
33887 次 |
| 最近记录: |