Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用WebClient.UploadValues()模拟页面发布_.net_Http_Httpwebrequest_Webclient - Fatal编程技术网

.net 使用WebClient.UploadValues()模拟页面发布

.net 使用WebClient.UploadValues()模拟页面发布,.net,http,httpwebrequest,webclient,.net,Http,Httpwebrequest,Webclient,我使用下面的代码来模拟一个页面帖子。(我正在子类化WebClient,以便扩展一些受保护的成员。) 这段代码很简单,但我有两个问题: 我知道如果出现错误,我会得到一个异常,但我认为使用非成功HTTP状态代码的结果仍然是可能的。有没有一种不需要解析结果就可以获取这些状态代码的方法 此外,我还需要添加一些标题,使其看起来像一篇真正的页面文章。有没有这样做的好例子以及我需要添加的标题类型 表单帖子所需的唯一请求头是“内容类型:x-www-FORM-urlencoded” 此外,WebClient将为所

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

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

  • 我知道如果出现错误,我会得到一个异常,但我认为使用非成功HTTP状态代码的结果仍然是可能的。有没有一种不需要解析结果就可以获取这些状态代码的方法

  • 此外,我还需要添加一些标题,使其看起来像一篇真正的页面文章。有没有这样做的好例子以及我需要添加的标题类型


  • 表单帖子所需的唯一请求头是“内容类型:x-www-FORM-urlencoded”


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

    谢谢,但我现在正在设置内容类型标题,但返回的HTML内容指示错误。(
    (14)推荐人、中继响应或接收链接URL无效。
    public class AuthorizeNetClient : WebClient
    {
        public string PostData(string url, FormCollection formData)
        {
            byte[] response = UploadValues(url, formData);
            return Encoding.ASCII.GetString(response);
        }
    }