WebClient 请求返回空字符串
Posted
技术标签:
【中文标题】WebClient 请求返回空字符串【英文标题】:WebClient request returns empty string 【发布时间】:2014-03-06 17:38:45 【问题描述】:在我的程序中我需要获取我的站点的内容,然而webclient对象的DownloadString方法的返回返回null,然而最耐人寻味的是没有例外。状态码是200,请求完美,但是url返回一个空字符串。
WebClient wc = new WebClient();
String teste = wc.DownloadString("http://www.wiplay.com.br");
我的网站 http://www.wiplay.com.br
【问题讨论】:
这是一个空字符串,不是空的。该网站可能需要更多标题。 有没有办法知道哪些标题是强制性的? 【参考方案1】:您的网站似乎需要设置用户代理标头才能响应。
在调用 DownloadString 方法之前添加以下内容:
wc.Headers.Add(HttpRequestHeader.UserAgent, "your useragent string");
【讨论】:
是的,看起来可行……但是网站设计很差,恕我直言。没有默认页面? 有些网站使用这种方法主要是为了避开爬虫。所以我会说这是一个糟糕的安全功能。 coolmine 谢谢,正是这个。我是站点管理员但不是服务器的管理员,服务器是共享的,对于你说的那个糟糕的安全功能我能做些什么吗? 很难说,取决于它是如何实现的,因为这可以通过多种方式完成,从 php 代码到 .htaccess 文件。所以第一步是找出使用哪种方法。【参考方案2】:在我的情况下,无论我设置什么标头,尽管状态代码为 200,但使用 HttpClient 和 WebClient 都会导致空字符串。 如果有人仍然遇到此问题,请使用 RestSharp 最终返回预期的响应正文。
var dataString = JObject.FromObject(anonymousObject).ToString();
var client = new RestClient(url);
var request = new RestRequest(Method.POST);
request.AddParameter("application/json", dataString, ParameterType.RequestBody);
var response = client.Post(request);
【讨论】:
以上是关于WebClient 请求返回空字符串的主要内容,如果未能解决你的问题,请参考以下文章
file_get_contents('php://input') 总是返回一个空字符串
向 USB GSM 调制解调器发送“AT”命令在 Python 中返回空字符串