标签: webrequest

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在第二次调用时超时

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

代码挂起:

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万
查看次数

WebRequest是否是与网站交互的正确C#工具?

我正在用C#编写一个小工具,它需要使用POST和json格式向网站发送数据和从网站接收数据.我以前从未在C#(或任何语言)中做过这样的事情,所以我很难找到一些有用的信息让我开始.

我在C#中找到了一些关于WebRequest类的信息(特别是从这里开始),但在我开始深入研究之前,我想知道这是否适合这项工作.

我发现有很多工具可以将数据转换为json格式,但其他方面并不多,所以任何信息在这里都会非常有用,以防我最终陷入死胡同.

.net c# webrequest

35
推荐指数
2
解决办法
4万
查看次数

向需要Windows身份验证的网页发出Web请求

我正在尝试使用.net中的WebRequest类向网页发出请求.我尝试阅读的网址需要Windows身份验证,因此我会收到未经授权的异常.如何将Windows凭据传递给此请求以便进行身份验证.

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create( "http://myapp/home.aspx" );

request.Method = "GET";
request.UseDefaultCredentials = false;
request.PreAuthenticate = true;
request.Credentials = new NetworkCredential( "username", "password", "domain" );

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Raises Unauthorized Exception

this.Response.Write( response.StatusCode );
Run Code Online (Sandbox Code Playgroud)

上面的代码返回以下错误.

System.Net.WebException: The remote server returned an error: (401) Unauthorized.
Run Code Online (Sandbox Code Playgroud)

检查异常细节时,我注意到一件事是我尝试访问的URL是重定向到另一个提示我提供NT登录详细信息的URL.我相信凭据也应该转发到此URL.但显然它没有发生.

c# webrequest windows-authentication

35
推荐指数
4
解决办法
7万
查看次数

从WebRequest模拟WebResponse

我终于开始讨论创建一些与RESTful Web界面一起使用的应用程序,但是,我担心每次按F5运行一系列测试时我都在锤击他们的服务器.

基本上,我需要获得一系列的Web响应,以便我可以测试我正确解析变化的响应,而不是每次都打到它们的服务器,我想我可以这样做一次,保存XML然后在本地工作.

但是,我不知道如何"模拟"WebResponse,因为(AFAIK)它们只能由WebRequest.GetResponse实例化.

你们怎么去嘲笑这种事情?你呢?我真的不喜欢我正在锤击他们的服务器的事实:SI不想过多地改变代码,但我希望有一种优雅的方式来做这件事.

接受后更新

Will的回答是我所需要的一记耳光,我知道我错过了一个基本点!

  • 创建一个接口,该接口将返回代表XML的代理对象.
  • 实现接口两次,一次使用WebRequest,另一次返回静态"响应".
  • 接口实现然后基于响应或静态XML实例化返回类型.
  • 然后,您可以在测试或生产时将所需的类传递给服务层.

一旦我敲了代码,我就会粘贴一些样本.

xml rest web-services webrequest webresponse

34
推荐指数
2
解决办法
1万
查看次数

从MemoryStream png,gif创建WPF BitmapImage

我在创建一个BitmapImage来自MemoryStreamweb请求的png和gif字节时遇到了一些麻烦.这些字节似乎可以很好地下载,并且BitmapImage创建的对象没有问题,但是图像实际上并没有在我的UI上呈现.仅当下载的图像是png或gif类型时才会出现此问题(适用于jpeg).

以下是演示此问题的代码:

var webResponse = webRequest.GetResponse();
var stream = webResponse.GetResponseStream();
if (stream.CanRead)
{
    Byte[] buffer = new Byte[webResponse.ContentLength];
    stream.Read(buffer, 0, buffer.Length);

    var byteStream = new System.IO.MemoryStream(buffer);

    BitmapImage bi = new BitmapImage();
    bi.BeginInit();
    bi.DecodePixelWidth = 30;
    bi.StreamSource = byteStream;
    bi.EndInit();

    byteStream.Close();
    stream.Close();

    return bi;
}
Run Code Online (Sandbox Code Playgroud)

为了测试Web请求是否正确获取字节,我尝试了以下操作,将字节保存到磁盘上的文件,然后使用a UriSource而不是a 加载图像StreamSource,它适用于所有图像类型:

var webResponse = webRequest.GetResponse();
var stream = webResponse.GetResponseStream();
if (stream.CanRead)
{
    Byte[] buffer = new Byte[webResponse.ContentLength];
    stream.Read(buffer, 0, buffer.Length);

    string fName = "c:\\" + …
Run Code Online (Sandbox Code Playgroud)

wpf memorystream image webrequest bitmapimage

28
推荐指数
2
解决办法
6万
查看次数

使用.NET WebRequest将文件上载到sharepoint时出现409/Conflict HTTP错误的原因?

我有一个方法,使用WebRequest将文件上传到sharepoint 2010列表/文件夹,使用PUT请求,并将Overwrite Header设置为T(覆盖).

当上载多个文件(多次调用方法)时,某些请求会因409 Conflict HTTP错误而失败.

我用google搜索,似乎最常见的原因是试图影响/更新不存在的文件(比如将请求URL设置为没有文件名的路径).但事实并非如此.如果冲突与已经存在的文件有关,我在上传之前添加了代码以物理删除文件,我仍然得到一些409.

有没有人收到过这种类型的错误,如果有的话,你能告诉我你是如何修复它的,根本原因是什么?任何帮助是极大的赞赏.谢谢

.net sharepoint webrequest httpwebrequest

28
推荐指数
2
解决办法
10万
查看次数

C# - 如何进行HTTP调用

我想对网站进行HTTP调用.我只需要点击URL,不想上传或下载任何数据.什么是最简单,最快速的方法.

我尝试了下面的代码,但它的速度很慢,在第二次重复请求之后,它只是进入超时时间为59秒而不是恢复:

WebRequest webRequest = WebRequest.Create("http://ussbazesspre004:9002/DREADD?" + fileName);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = fileName.Length;

Stream os = webRequest.GetRequestStream();
os.Write(buffer, 0, buffer.Length);
os.Close();
Run Code Online (Sandbox Code Playgroud)

使用WebClient更有效率吗?

WebClient web = new WebClient();
web.UploadString(address);
Run Code Online (Sandbox Code Playgroud)

我正在使用.NET ver 3.5

c# webclient http webrequest

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

将HTTP身份验证与C#WebRequest一起使用

我想向需要身份验证的页面发出Web请求.我该怎么做呢?我找到了一些可能使用Credentials属性的内容,但我不确定如何使用它.

c# authentication webrequest

27
推荐指数
2
解决办法
5万
查看次数

HttpWebRequest以URL结尾的URL

当我使用WebRequest.Create(" http:// abc/test.")进行GET时,我得到404,因为根据fiddler,尾随点被.NET剥离,Web服务器需要点.我该如何防止或解决它.任何解决方法表示赞赏!

.net webrequest httpwebrequest

26
推荐指数
2
解决办法
9291
查看次数