【问题标题】:Can't get response from HttpWebRequest in C#无法从 C# 中的 HttpWebRequest 获得响应
【发布时间】:2016-05-12 10:25:40
【问题描述】:

错误提示:

"远程服务器返回错误: (http://www.tgv.com.my/movies/man-city-v-arsenal-HO00005174) 禁止”

下面是我的代码:

string url = https://translate.google.com/translate_a/single?client=t&sl=en&tl=vi&hl=vi&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&ie=UTF-8&oe=UTF-8&otf=1&srcrom=1&ssel=0&tsel=0&kc=5&tk=520987|10880&q=" + keyword;
var request = (HttpWebRequest)WebRequest.Create(url);
WebProxy proxy = (WebProxy)WebProxy.GetDefaultProxy();
if (proxy.Address != null)
{
    proxy.Credentials = proxy.Credentials = new NetworkCredential("username", "pw");
    WebRequest.DefaultWebProxy = new System.Net.WebProxy(proxy.Address, proxy.BypassProxyOnLocal, proxy.BypassList, proxy.Credentials);
}

request.Proxy = proxy;
var postData = "";
var data = Encoding.ASCII.GetBytes(postData);

request.Method = "POST";
request.ContentType = "text/html; charset=UTF-8";
request.ContentLength = data.Length;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";

using (var stream = request.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}

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

var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
return responseString;

谢谢!

【问题讨论】:

  • 你想得到www.google.com的回复吗?
  • 我已经在 www.google.com 上试过了。但不行:(。谢谢!
  • POST "" 到根 url 是行不通的。你到底想做什么?
  • 你还留下了一些未处理的东西。
  • 嗨,Alex K,网址:translate.google.com/translate_a/…" + 关键字

标签: c# httpwebrequest http-status-code-403


【解决方案1】:

使用您的 Url,它不是 POST 请求,而是 GET 请求,可以这样完成:

string url = "https://translate.google.com/translate_a/single?client=t&sl=de&tl=en&hl=de&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=2&ssel=0&tsel=0&kc=4&tk=767774.885916&q=hallo%20du";
var request = (HttpWebRequest)WebRequest.Create(url);

var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

但是如果你的q 应该有另一个值,那么其他值也必须更改,否则你会看到Error 403 告诉你,你没有权限执行你的请求。

使用谷歌翻译,考虑看看Google Translate API。 在那里你可以这样做:

https://www.googleapis.com/language/translate/v2?key=YOUR_API_KEY&q=hello%20world&source=en&target=de

但这是一项付费服务​​...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-25
    • 2021-07-18
    • 2018-02-20
    • 2020-12-11
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多