c# - 为什么我无法使用 HttpWebRequest 获取请求?
问题描述
电话号码是“保护”,我必须单击“显示号码”才能通过电话获得请求。在我发送请求之前,我必须从按钮“显示号码”中的源数据 ID =“805c74a74f3ea9fe6db5da90d722”中获取,并使用此令牌作为 _rp_offerID 发送 POST。
正确答案是:
<span><strong><a href="tel:516000551"> 516 000 551</a></strong></span>
我的回答是:
?
我的完整代码:
HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create("https://sprzedajemy.pl/oferta-dane.telefon");
getRequest.Method = "POST";
getRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36";
getRequest.ContentType = "application/x-www-form-urlencoded";
getRequest.Host = "sprzedajemy.pl";
getRequest.Referer = url;
getRequest.Headers.Add("accept-encoding", "gzip, deflate, br");
getRequest.Headers.Add("accept-language", "pl,en-US;q=0.9,en;q=0.8,ru;q=0.7");
getRequest.Headers.Add("origin", "https://sprzedajemy.pl");
getRequest.Headers.Add("X-Requested-With", "XMLHttpRequest");
var postData = "_rp_offerID=" + itemId;
var data = Encoding.ASCII.GetBytes(postData);
getRequest.ContentLength = data.Length;
using (var stream = getRequest.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var httpResponseP = (HttpWebResponse)getRequest.GetResponse();
var streamReaderP = new StreamReader(httpResponseP.GetResponseStream());
string strPhone = streamReaderP.ReadToEnd();
Console.WriteLine(strPhone);
我不知道我的代码有什么问题...
如果我将 REST 客户端用于 Chrome:
POST https://sprzedajemy.pl/oferta-dane.telefon
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://sprzedajemy.pl/doskonale-dla-pary-planujacej-poszerzenie-rodziny-sprawdz-warszawa-2-1b8e55-nr57347155
accept-encoding: gzip, deflate, br
accept-language: pl,en-US;q=0.9,en;q=0.8,ru;q=0.7
origin: https://sprzedajemy.pl
X-Requested-With: XMLHttpRequest
Host: sprzedajemy.pl
Content-Length: 48
身体形态数据:
_rp_offerID=80e158b0281e04a2102fd7bce6eba0cd3833
答案是正确的
解决方案
你为什么不使用 HttpClient ?这要容易得多!检查下面的示例:
using System;
using System.Net.Http;
using System.Text;
namespace httpClient
{
class Program
{
static void Main(string[] args)
{
using (var client = new HttpClient() {BaseAddress = new Uri("https://sprzedajemy.pl")})
{
client.DefaultRequestHeaders.Add("accept-encoding", "gzip, deflate, br");
client.DefaultRequestHeaders.Add("accept-language", "pl,en-US;q=0.9,en;q=0.8,ru;q=0.7");
client.DefaultRequestHeaders.Add("origin", "https://sprzedajemy.pl");
client.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");
var postData = "_rp_offerID=80e158b0281e04a2102fd7bce6eba0cd3833";
var stringContent = new StringContent(postData, Encoding.Default, "application/x-www-form-urlencoded");
var result = client.PostAsync("oferta-dane.telefon", stringContent).GetAwaiter().GetResult();
}
}
}
}
我已经测试了这段代码,返回 200
推荐阅读
- javascript - React - 给我的子组件一个功能
- c - 如何计算字典中单词中两个首字母的频率?
- algorithm - 如果 IP 在范围列表中,则过滤它们
- c++ - 预处理器宏的 G++ 未使用标签警告
- python - 使用颜色图绘制和保存散点图
- angular - MatOption如何模拟选择
- html - 在内部 alb 前端的同一 az 中,从 apache http 上的 html 页面调用内部 alb 后面的 tomcat 服务器上的 jsp
- react-native - Null 不是对象(评估“mapView.current.animateToRegion”)
- node.js - 意外的语法错误:无法使用导入
- sql - 使用 Redshift 查询结果为 to_char 格式