我正在使用以下代码来模拟页面帖子。 (我正在对WebClient
进行子类化,以便我可以扩展一些受保护的成员。)
public class AuthorizeNetClient : WebClient
{
public string PostData(string url, FormCollection formData)
{
byte[] response = UploadValues(url, formData);
return Encoding.ASCII.GetString(response);
}
}
此代码很简单,但我有两个问题:
我知道如果出现错误,我会收到异常,但我认为仍然可以使用不成功的HTTP状态代码。有没有办法获取这些状态代码而无需解析结果?
此外,我还需要添加一堆标题,以使其看起来像真正的页面帖子。这样做的好例子和我需要添加的标题类型?
答案 0 :(得分:1)
FORM POST所需的唯一请求标头是'content-type:x-www-form-urlencoded'。
此外,WebClient将为所有HTTP状态代码抛出异常!= 2xx(即成功),所以你应该在这里。您只需要捕获WebException并查看e.Status == WebExceptionStatus.ProtocolError。如果是这种情况,您可以从Exception对象(e.Response)获取HttpWebResponse对象,并随意执行任何操作。