使用WebClient.UploadValues()模拟页面帖子

时间:2012-04-01 01:06:20

标签: .net http httpwebrequest webclient

我正在使用以下代码来模拟页面帖子。 (我正在对WebClient进行子类化,以便我可以扩展一些受保护的成员。)

public class AuthorizeNetClient : WebClient
{
    public string PostData(string url, FormCollection formData)
    {
        byte[] response = UploadValues(url, formData);
        return Encoding.ASCII.GetString(response);
    }
}

此代码很简单,但我有两个问题:

  1. 我知道如果出现错误,我会收到异常,但我认为仍然可以使用不成功的HTTP状态代码。有没有办法获取这些状态代码而无需解析结果?

  2. 此外,我还需要添加一堆标题,以使其看起来像真正的页面帖子。这样做的好例子和我需要添加的标题类型?

1 个答案:

答案 0 :(得分:1)

FORM POST所需的唯一请求标头是'content-type:x-www-form-urlencoded'。

此外,WebClient将为所有HTTP状态代码抛出异常!= 2xx(即成功),所以你应该在这里。您只需要捕获WebException并查看e.Status == WebExceptionStatus.ProtocolError。如果是这种情况,您可以从Exception对象(e.Response)获取HttpWebResponse对象,并随意执行任何操作。