标签: httpwebrequest

如何使用参数创建HTTP get请求

是否可以通过HTTPget请求传递参数?如果是这样,我该怎么做呢?我找到了一个HTTP帖子请求(链接).在该示例中,字符串postData被发送到网络服务器.我想用get做同样的事情.谷歌发现,在这个例子中HTTP得到这里.但是,没有参数发送到Web服务器.

c# get httpwebrequest

46
推荐指数
5
解决办法
17万
查看次数

HttpWebRequest:向CookieContainer添加Cookie - > ArgumentException(Parametername:cookie.Domain)

我正在尝试通过我的应用程序登录网站.我做了什么:

首先,我弄清楚浏览器如何使用Fiddler执行授权过程.我检查了如何构建POST请求,并尝试重建它.浏览器发送4个Cookie(Google Analytics),我尝试设置它们:

CookieContainer gaCookies = new CookieContainer();
gaCookies.Add(new Cookie("__utma", "#########.###########.##########.##########.##########.#"));
gaCookies.Add(new Cookie("__utmb", "#########.#.##.##########"));
gaCookies.Add(new Cookie("__utmc", "#########"));
gaCookies.Add(new Cookie("__utmz", "#########.##########.#.#.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"));
Run Code Online (Sandbox Code Playgroud)

(刚用#替换了原始的cookie数据)

然后我用调试器完成了代码,一旦第一个gaCookies.Add被执行,应用程序就停止了

System.ArgumentException: The parameter '{0}' cannot be an empty string. Parameter name: cookie.Domain
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会这样.Cookie的构造函数不需要域,我不知道在哪里可以得到这个值?

如果你们中的某个人可以帮助我,那将是非常好的.
我不是网络开发者或网络专家,所以我不太了解它.
如果没有"简短快速的答案",我是否可以从中获悉这一点?

c# cookies webrequest httpwebrequest

45
推荐指数
1
解决办法
6万
查看次数

如何在HttpWebRequest中为单个请求禁用"Expect:100 continue"标头?

HttpWebRequest自动附加Expect: 100-continuePOST请求的标头.互联网上的各种消息来源表明,这可以被禁用如下:

System.Net.ServicePointManager.Expect100Continue = false;
Run Code Online (Sandbox Code Playgroud)

但是,我正在编写一个库,我不能为整个appdomain禁用它,以防应用程序依赖于此行为.我也不能假设它将保持设定为此值.如何针对特定请求禁用它?

.net c# httpwebrequest

44
推荐指数
2
解决办法
3万
查看次数

HttpWebRequest在第二次调用时超时

为什么以下代码超时运行它的第二个(及后续)时间?

代码挂起:

using (Stream objStream = request.GetResponse().GetResponseStream())
Run Code Online (Sandbox Code Playgroud)

然后导致WebException表示请求已超时.

我试过这个用WebRequestHttpWebRequest

编辑:似乎代码正在崩溃 request.GetResponse()

编辑:这篇文章表明它可能是一个GC问题 - > http://www.vbforums.com/showthread.php?t=610043 - 根据这篇文章,如果Fiddler在后台打开,问题就会得到缓解.

服务器在那里并可用于请求.

    private string GetQLMResponse(string URL)
    {
        HttpWebRequest request = WebRequest.Create(URL) as HttpWebRequest;
        request.Credentials = new NetworkCredential(Settings.Default.LicenseUser, Settings.Default.LicensePassword);
        request.KeepAlive = false;
        request.Timeout = 5000;
        request.Proxy = null;

        // Read stream
        string responseString = String.Empty;
        try
        {
            using (var response = request.GetResponse())
            {
                using (Stream objStream = response.GetResponseStream())
                {
                    using (StreamReader objReader = new StreamReader(objStream))
                    {
                        responseString = objReader.ReadToEnd();
                        objReader.Close();
                    }
                    objStream.Flush(); …
Run Code Online (Sandbox Code Playgroud)

c# garbage-collection http webrequest httpwebrequest

43
推荐指数
4
解决办法
6万
查看次数

为什么我在使用HttpWebRequest时在某些链接上出现"(304)Not Modified"错误?

我尝试使用HttpWebRequest访问某些链接的任何想法我得到"远程服务器返回错误:(304)未修改." 在代码中?

我正在使用的代码来自Jeff的帖子(该页面似乎已经消失,请在Wayback Machine上查看归档副本).

注意代码的概念是一个简单的代理服务器,因此我将浏览器指向这个本地运行的代码片段,它获取我的浏览器请求,然后通过创建新的HttpWebRequest代理它,如您所见代码.它适用于大多数网站/链接,但对于一些人来说,这个错误出现了.您将在代码中看到一个关键位,它似乎将http标头设置从浏览器请求复制到它的请求到网站,并在标头属性中复制.不确定问题是否与它如何模仿请求的这个方面有关,然后结果会发生什么?

case "If-Modified-Since":
   request.IfModifiedSince = DateTime.Parse(listenerContext.Request.Headers[key]);
   break;
Run Code Online (Sandbox Code Playgroud)

我从例如http://en.wikipedia.org/wiki/Main_Page获得了该问题

PS.更新在这里

仍然无法解决这个问题.基本上我可以识别1个有问题的链接,它似乎工作正常,第二次得到错误,第3次OK,第4次得到错误,第5次OK等等好像有一些状态没有被清除或代码中有些东西.我尝试使用"使用"类型语句等来清理代码.

这是代码.如果有人能够发现为什么我每次第二次浏览http://newsimg.bbc.co.uk/css/screen/1_0_16/nol/v4/story.css这样的链接(从第2次开始,而不是第一次)通过这个代理代码,我得到了我想听到的错误.

class Program
{
    static void Main(string[] args)
    {
        Proxy p = new Proxy(8080);

        Thread proxythread = new Thread(new ThreadStart(p.Start));
        proxythread.Start();

        Console.WriteLine("Proxy Started. Press Any Key To Stop...");
        Console.ReadKey();

        p.Stop();
     }
}

public class Proxy
{
    private HttpListener _listener;
    private int _port;

    public Proxy(int port)
    {
        int defaultport = 8080;

        // Setup Thread Pool
        System.Threading.ThreadPool.SetMaxThreads(50, 1000); …
Run Code Online (Sandbox Code Playgroud)

http httpwebrequest if-modified-since http-status-code-304

42
推荐指数
3
解决办法
17万
查看次数

如何将参数添加到WebRequest中?

我需要从webservice调用一个方法,所以我写了这段代码:

 private string urlPath = "http://xxx.xxx.xxx/manager/";
 string request = urlPath + "index.php/org/get_org_form";
 WebRequest webRequest = WebRequest.Create(request);
 webRequest.Method = "POST";
 webRequest.ContentType = "application/x-www-form-urlencoded";
 webRequest.
 webRequest.ContentLength = 0;
 WebResponse webResponse = webRequest.GetResponse();
Run Code Online (Sandbox Code Playgroud)

但是这种方法需要一些参数,如下所示:

发布数据:

_username:'API USER',         // api authentication username

_password:'API PASSWORD',     // api authentication password
Run Code Online (Sandbox Code Playgroud)

如何将这些参数添加到此Webrequest中?

提前致谢.

.net c# web-services httpwebrequest

41
推荐指数
3
解决办法
16万
查看次数

C#中的代理基本身份验证:HTTP 407错误

我正在使用需要身份验证的代理,即在浏览器中如果我尝试打开页面,它会立即请求凭据.我在我的程序中提供了相同的凭据,但它因HTTP 407错误而失败.

这是我的代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);

IWebProxy proxy = WebRequest.GetSystemWebProxy();
CredentialCache cc = new CredentialCache();
NetworkCredential nc = new NetworkCredential();

nc.UserName = "userName";
nc.Password = "password";
nc.Domain = "mydomain";
cc.Add("http://20.154.23.100", 8888, "Basic", nc);
proxy.Credentials = cc;
//proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
request.Proxy = proxy;
request.Proxy.Credentials = cc;
request.Credentials = cc;
request.PreAuthenticate = true;
Run Code Online (Sandbox Code Playgroud)

我尝试了所有可能的事情,但似乎我错过了一些东西.是这样的,我必须提出两个要求吗?首先没有凭据,一旦我从服务器收到有关凭据需求的回复,请使用凭据进行相同的请求?

c# proxy httpwebrequest basic-authentication http-status-code-407

40
推荐指数
3
解决办法
12万
查看次数

服务器提交了协议违规.Section = ResponseHeader Detail = CR必须后跟LF,在WinForms中?

我试图使用WebClient/HttpWebRequest从服务器下载一些数据.我使用以下代码来执行此操作:

WebClient client = new WebClient();
client.Credentials = new NetworkCredential("admin", "password");
Stream datastream = client.OpenRead("http://routerlogin.com/cgi-bin/CF_logs.html");
StreamReader reader = new StreamReader(datastream);
Run Code Online (Sandbox Code Playgroud)

服务器是我的页面在路由器的配置中.它可以在浏览器中正常工作,但是当使用我的代码下载时,它会抛出一条WebException消息

服务器提交了协议违规.Section = ResponseHeader Detail = CR必须后跟LF,在WinForms?中.

我找到了一个解决方案,如果他们使用ASP.net,可以使用,将以下内容添加到web.config:

<configuration> 
    <system.net> 
        <settings> 
            <httpWebRequest useUnsafeHeaderParsing="true" /> 
        </settings> 
    </system.net> 
</configuration>
Run Code Online (Sandbox Code Playgroud)

但是,我正在制作一个WinForms应用程序,所以这对我不起作用.有什么替代方法可以解决这个问题?

c# webclient httpwebrequest system.net.webexception winforms

40
推荐指数
1
解决办法
5万
查看次数

使用HttpWebRequest/HttpWebResponse获取HTTP请求和响应以在Fiddler中显示

有什么方法可以将Fiddler捕获到使用.NET HttpWebRequest和HttpWebResponse捕获请求和响应吗?

.net httpwebrequest fiddler httpwebresponse

39
推荐指数
2
解决办法
3万
查看次数

如何使用Fiddler调试来自任何应用程序的流量(例如C#/ WPF应用程序)

我想在这里调试来自另一个问题的 HTTP请求的错误.所以我读了一下Fiddler,想用它来调试我的问题.但我似乎无法通过我的WPF应用程序获得通过Fiddler的流量.我相信我需要配置一个代理.我使用WebClient作为基本示例,但我想我稍后会需要WebRequest.但是现在,通过一个简单的WebClient,我怎样才能让它通过Fiddler(我相信我必须将代理设置为localhost:8888)?

更新:

我不知道我是否做对了,但我试过了

var wc = new WebClient();
WebProxy proxy = new WebProxy();
proxy.Address = new Uri("http://localhost:8888");
wc.Proxy = proxy;
Run Code Online (Sandbox Code Playgroud)

但失败了 - 我在Fiddler看不到任何交通

我试过了 ...

var wc = new WebClient();
WebProxy proxy = new WebProxy("127.0.0.1", 8888);
wc.Proxy = proxy;
Run Code Online (Sandbox Code Playgroud)

依然没有

c# wpf webclient httpwebrequest fiddler

38
推荐指数
3
解决办法
6万
查看次数