标签: webrequest

Webrequest禁止AutoRedirect

在.Net 2.0中,如何在使用WebRequest时禁止AutoRedirect?我发现一些源代码在那里使用了AllowAutoRedirect属性,但在我的WebRequest上没有这样的属性.

c# webrequest .net-2.0

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

如何在我的代码中获取IE凭据?

我目前正在使用SpicIE开发一个IE插件.

这个插件做了一些网页抓取,类似于MSDN上发布的示例:

WebRequest request = WebRequest.Create ("http://www.contoso.com/default.html");

request.Credentials = CredentialCache.DefaultCredentials;

HttpWebResponse response = (HttpWebResponse)request.GetResponse ();

Stream dataStream = response.GetResponseStream ();

StreamReader reader = new StreamReader (dataStream);

string responseFromServer = reader.ReadToEnd ();

reader.Close ();
dataStream.Close ();
response.Close ();
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码时,我收到以下错误消息:

远程服务器返回错误:(407)需要代理身份验证.

我目前正在代理服务器后面工作,并使用NetworkCredential类手动提供我的网络凭据

request.Credentials = new System.Net.NetworkCredential("name", "password", "domain");
Run Code Online (Sandbox Code Playgroud)

但我仍然收到同样的错误.

即使我的问题解决了,我知道该插件的一些用户将在代理服务器后面.

我想知道如何获取IE凭据并在我的代码中使用它来将其分配给request.Credentials.

也许是这样的:

request.Credentials = IE.DefaultCredentials;
Run Code Online (Sandbox Code Playgroud)

c# screen-scraping webrequest

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

如何使用C#和ASP.net代理WebRequest?

差不多......我想做这样的事情:

Stream Answer = WebResp.GetResponseStream();
Response.OutputStream = Answer;
Run Code Online (Sandbox Code Playgroud)

这可能吗?

.net c# webrequest

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

编码来自HttpWebRequest的内容的问题

我使用HttpWebRequest使用以下代码读取网页:

 var pageurl = new Uri(url, UriKind.Absolute);

        var request = (HttpWebRequest)WebRequest.Create(pageurl);
        request.Method = "GET";
        request.AutomaticDecompression = DecompressionMethods.GZip;
        request.KeepAlive = false;
        request.ConnectionGroupName = Guid.NewGuid().ToString();
        request.ServicePoint.Expect100Continue = false;
        request.Pipelined = false;
        request.MaximumResponseHeadersLength = 4;

        if (ignoreCertificateErrors)
        {
            ServicePointManager.ServerCertificateValidationCallback += AcceptAllCertificatePolicy;
        }

        var response = (HttpWebResponse)request.GetResponse();


    if (response != null)
        {
            using (var reader = new StreamReader(response.GetResponseStream()))
            {
                return reader.ReadToEnd();
            }
        }
Run Code Online (Sandbox Code Playgroud)

当传递的语言是英语时,这种方法非常有效,但当其他语言如西班牙语时,我会在返回的内容中获得大量的 .

代码是否有问题,或者是否存在我缺少的编码方式?

c# asp.net webrequest httpwebrequest httpwebresponse

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

System.Net.WebRequest在monotouch上没有Accept属性

我正在尝试为Monotouch编写一些代码,这些代码与REST API接口,REST API依赖于正确设置的Accept标头.如果我尝试在Monotouch中执行此操作,我会收到以下消息:

Type 'System.Net.WebRequest' does not contain a definition for 'Request'...
Run Code Online (Sandbox Code Playgroud)

尽管该属性出现在API文档中.

这是我与Monotouch的第一天,所以也许我错过了一些明显的东西......有什么想法吗?

c# mono webrequest httpwebrequest xamarin.ios

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

当我只需要XML的子元素时,如何反序列化对象的XML响应?

我从WebRequest获取以下XML:

<?xml version="1.0" encoding="UTF-8"?>
<search>
  <total_items>5</total_items>
  <page_size>10</page_size>
  <page_count>1</page_count>
  <page_number>1</page_number>
  <page_items></page_items>
  <first_item></first_item>
  <last_item></last_item>
  <search_time>0.044</search_time>
  <events>
    <event id="E0-001-053379749-0">
      <title>Antibalas</title>
      <url>http://test.com</url>
      <description>stuff</description>
      <start_time>2013-01-30 20:00:00</start_time>
      <stop_time></stop_time>
      <tz_id></tz_id>
      <tz_olson_path></tz_olson_path>
      <tz_country></tz_country>
      <tz_city></tz_city>
      <venue_id>V0-001-000189211-5</venue_id>
      <venue_url>http://blah.com</venue_url>
      <venue_name>Troubadour</venue_name>
      <venue_display>1</venue_display>
      <venue_address>9081 Santa Monica Boulevard</venue_address>
      <city_name>West Hollywood</city_name>
      <region_name>California</region_name>
      <region_abbr>CA</region_abbr>
      <postal_code>90069</postal_code>
      <country_name>United States</country_name>
      <country_abbr2>US</country_abbr2>
      <country_abbr>USA</country_abbr>
      <latitude>34.0815917</latitude>
      <longitude>-118.3892462</longitude>
      <geocode_type>EVDB Geocoder</geocode_type>
      <all_day>0</all_day>
      <recur_string></recur_string>
      <calendar_count></calendar_count>
      <comment_count></comment_count>
      <link_count></link_count>
      <going_count></going_count>
      <watching_count></watching_count>
      <created>2012-12-24 11:40:43</created>
      <owner>evdb</owner>
      <modified>2013-01-14 21:08:04</modified>
      <performers>
        <performer>
          <id>P0-001-000000517-4</id>
          <url>http://test.com</url>
          <name>Antibalas</name>
          <short_bio>Afro-beat / Funk / Experimental</short_bio>
          <creator>jfisher</creator>
          <linker>evdb</linker>
        </performer>
      </performers>
      <image>
        <url>http://s4.evcdn.com/images/small/I0-001/000/070/311-5.jpeg_/antibalas-11.jpeg</url>
        <width>48</width>
        <height>48</height>
        <caption></caption>
        <thumb>
          <url>http://s4.evcdn.com/images/thumb/I0-001/000/070/311-5.jpeg_/antibalas-11.jpeg</url> …
Run Code Online (Sandbox Code Playgroud)

c# xml serialization webrequest

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

关闭WebResponse,还是保持打开状态?

所以我正在制作一个几乎可以制作批量HttpWebRequests的程序.在这个程序中,速度是主要的.如果我能找到将HttpWebRequests增加甚至毫秒的方法,那就非常好了.

好的,我的问题是这样的:我有一个方法对一个站点发出HttpWebRequest(GET请求),另一个方法是对一个主机发出一个POST HttpWebRequest(略有不同的URL,但是同一个主机),这个方法叫做AFTER每隔一段时间使用第一种方法.

在我的第一个方法(GET请求,假设方法A)中,我在读取响应主体后关闭了WebResponse.让这个WebResponse保持打开状态,然后调用POST方法(让我们说方法B),或者我应该如何实现它,从方法A关闭WebResponse是不是更快?

示例代码:

public string MethodA()
{
   // Make a HttpWebRequest to a URL like: xxxx.yyyy.com
   WebResponse response = request.GetResponse();
   string x = ReadResponseBody(response);
   response.Close();
   if(x.Contains("something"))
      MethodB();
}

public void MethodB()
{
   // Make a POST HttpWebRequest to a URL like: xxxx.zzzz.com (same host).
   WebResponse response = request.GetResponse();
   response.Close();
}
Run Code Online (Sandbox Code Playgroud)

那么,我应该保留我的代码,关闭MethodA()中的第一个WebResponse,然后调用MethodB(),还是其他什么?

此外,任何人都可以提供一些关于如何提高速度的提示,因为这是我的程序中最重要的事情,我需要尽可能快.

c# sockets webrequest webresponse httpwebrequest

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

创建CURL请求ASP.NET

curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/AC053acaaf55d75ef32233132196e/Messages.json' \
--data-urlencode 'To=5555555555'  \
--data-urlencode 'From=+15555555555'  \
--data-urlencode 'Body=Test' \
-u AC053acaaf55d75a393498192382196e:[AuthToken]
Run Code Online (Sandbox Code Playgroud)

我有上面的卷曲代码,我需要连接到的API.问题是我需要使用ASP.NET(C#)进行连接.我对ASP.NET不是很熟悉,也不知道从哪里开始.我知道如何在PHP中编写代码,但ASP.NET是另一回事.从我所做的研究中我需要使用WebRequest.如何输入请求的发布数据和authtoken(-u AC053acaaf55d75a393498192382196e:[AuthToken])部分.

string url = "https://api.twilio.com/2010-04-01/Accounts/AC053acaaf55d75ef32233132196e/Messages.json";
WebRequest myReq = WebRequest.Create(url);
myReq.Method = "POST";
Run Code Online (Sandbox Code Playgroud)

php c# asp.net curl webrequest

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

WebRequest.Create和WebRequest.CreateHttp之间的区别

我正在查看之间的文档,WebRequest.CreateWebRequest.CreateHttp确定应在应用程序中使用哪个文档。我看不到这两个方法之间有什么不同,除了WebRequest.Createreturn a WebRequestWebRequest.CreateHttpreturn HttpWebRequest

除了返回值外,这两种方法是否基本相同?还是他们每个人在内部做不同的事情?

c# webrequest

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

与WebRequest相比,RestSharp的性能问题

我在restsharp客户端中发现了一些性能问题,我在函数PerformanceRequest2中使用RestSharp向一些非常好的API发送请求,并在PerformRequest中使用WebRequest使用普通的.net请求

PerformRequest的平均响应时间是75毫秒,而使用RestSharp的PerformRequest2是300毫秒.这是restsharp的一些限制,还是我们使用restsharp的方式做错了

private static void PerformRequest2(string requestData)
{
    var request = JsonConvert.DeserializeObject<ComplexClass>(requestData);
    var client2 = new RestClient("URL");
    var restRequest = new RestRequest();
    restRequest.Method = Method.PUT;
    restRequest.AddHeader("Content-Type", "application/json");
    restRequest.AddHeader("Authorization", string.Format("Bearer {0}", token));

    restRequest.AddJsonBody(request);

    var restResponse2 = client2.Execute(restRequest);
    if (restResponse2.StatusCode != HttpStatusCode.OK)
    {
        throw new Exception("error");
    }
}


private static void PerformRequest(string requestData)
{
    var request = JsonConvert.DeserializeObject<ComplexClass>(requestData);
    var webRequest =
        WebRequest.Create("URL");
    webRequest.ContentType = "application/json";
    webRequest.Method = "PUT";
    webRequest.Headers.Add(HttpRequestHeader.Authorization, string.Format("Bearer {0}", token));
    using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))
    {
        streamWriter.Write(JsonConvert.SerializeObject(request));
        streamWriter.Flush();
    } …
Run Code Online (Sandbox Code Playgroud)

c# webrequest httpwebrequest restsharp

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