我想检查特定页面是否被重定向.但是,每当我尝试这个时,我回来的标题似乎来自重定向的页面,而不是最初请求的页面(特别是,状态是好的而不是我想看到的302).
有什么我可以设置,以便它不会自动遵循重定向?
WebRequest request = WebRequest.Create(@"http://www.example.com/page.html");
request.Method = "HEAD";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.Redirect)
{
...
}
else
{
MessageBox.Show("HTTP Code: " + response.StatusCode + "\r\n\r\n" + response.StatusDescription);
return false;
}
Run Code Online (Sandbox Code Playgroud) Uri targetUri = new Uri(targetURL);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string data = reader.ReadToEnd();
response.Close();
Run Code Online (Sandbox Code Playgroud)
为什么上面的代码工作正常,但以下代码没有?请注意,我在以下代码中提前关闭响应.
Uri targetUri = new Uri(targetURL);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
response.Close();
string data = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud) 尝试cot.ag/o1LnfW从 .NET 使用 HttpWebRequest使用 URI ,我得到 301 Moved 响应,响应头 Location 有一个(不正确的)值:
http://www.joycemeyer.org/BroadcastHome.aspx?video=Living_Beyond_Your_Feelings_â_Pt_1&utm_source=Twitter&utm_campaign=EEL&utm_medium=post&utm_term=September29&utm_content=post
从 Fiddler,我得到了(正确的)Location 标头值:
http://www.joycemeyer.org/BroadcastHome.aspx?video=Living_Beyond_Your_Feelings_–_Pt_1&utm_source=Twitter&utm_campaign=EEL&utm_medium=post&utm_term=September29&utm_content=post
注意到 - 在 Fiddler URL 中出现的不同之处。在 Fiddler 的情况下,字节是 E2 80 93。在 .Net 的情况下,字节是 E2 3F 3F。这会导致不正确的标头解释,随后无法遵循重定向。
我认为这是一个 .NET 框架错误,但我不知道 RFC 说它应该作为什么发送。我应该将此作为错误报告给 Microsoft,还是 bit.ly 在提供错误代码页中的标头时失败?
在HttpWebRequest中,用户可以将Method作为Post OR Get或Put或DELETE等传递.
但是对于我们的特定项目,我需要将HttpMethod作为"POST/api/login HTTP/1.0"传递.
但是在.NET CF中不允许这样做.
那么任何人都可以告诉我解决这个问题,以便自定义Http方法.
提前致谢.
我正在使用“PUT”方法将一些 JSON 数据发送到 Web 服务,但遇到422 无法处理的实体错误。
我怎样才能真正看到 JSON 格式的服务器响应?我深入研究了异常,但仍然找不到 json 响应。
前任:
JSON 请求:
{
customer:
{
name: "asd",
address: "test"
}
}
Run Code Online (Sandbox Code Playgroud)
如果一切正常,它应该回复我一些 JSON 数据。
前任:
{
customer:
{
id: 1,
name: "asd",
address: "test"
}
}
Run Code Online (Sandbox Code Playgroud) 我是网络开发的新手.我有Android应用程序使用HTTPServer托管一些网页.我正在使用Netty来解码/编码请求/响应.现在,我想在有人导航到我的网页时显示基本身份验证对话框.像这样的东西:
我可以得到一些指示吗?这是HTTP内置的功能,任何RFC?我需要编写一些java脚本吗?任何帮助都会很棒.
javascript httpwebrequest httpwebresponse httpserver http-status-code-401
我正在尝试从 url 下载 xls 文件:http : //www.site.com/ff/excel/file.aspx? deven =0
我正在使用此代码,但下载完成后,文件未正确下载。如何正确下载此文件?
string remoteFilename="http://www.site.com/ff/excel/file.aspx?deven=0";
string localFilename = "D:\\1\\1.xls";
Stream remoteStream = null;
Stream localStream = null;
WebResponse response = null;
try
{
// Create a request for the specified remote file name
WebRequest request = WebRequest.Create(remoteFilename);
if (request != null)
{
// Send the request to the server and retrieve the
// WebResponse object
response = request.GetResponse();
response.ContentType = "application/vnd.ms-excel";
if (response != null)
{
// Once the WebResponse object has …Run Code Online (Sandbox Code Playgroud) 我有一个Windows应用程序,可以获取URL和下载.jpeg文件.对于某些url,ContentLength属性为-1,因此抛出异常.
这是我的代码:
var url = new Uri(sUrlToReadFileFrom[i]);
_request = (HttpWebRequest)WebRequest.Create(url);
var response = (System.Net.WebResponse)_request.GetResponse();
_response = response;
_response.Close();
Run Code Online (Sandbox Code Playgroud)
这是网址:http: //photos.autonexus.com/imager/115-005-CA/P2GTPI4AB9/640/10132013133959/1FAHP0HA3AR373228_1.jpg 这里有一些关于我的http请求的信息:
Headers = {Transfer-Encoding: chunked
Connection: keep-alive
Content-Disposition: inline; filename="phpThumb_generated_thumbnail.jpeg"
Content-Type: image/jpeg
Date: Wed, 12 Nov 2014 00:31:29 GMT
Server: nginx
X-Powered-By: PleskLin}
Run Code Online (Sandbox Code Playgroud)
我认为分块头导致了问题,但我已经谷歌搜索了2天,没有好的解决方案,或者我找不到一个好的解决方案.
以下是错误的屏幕截图:

正如您在第130行中看到的那样,因为_response.ContentLength已经为-1,因此iSize将为-1并且它会在第149行抛出异常.
我不知道,但内容长度始终为负,即使响应具有正确的内容长度标头。例如:
class Program
{
static void Main()
{
try
{
string result = Get("http://stackoverflow.com/");
Console.WriteLine("Response length = {0}", result.Length);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
static string Get(string adr)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(adr);
req.UserAgent = "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0";
req.Proxy = null;
req.KeepAlive = false;
req.Headers.Add("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8");
req.AllowAutoRedirect = true;
req.Timeout = 10000;
req.ReadWriteTimeout = 10000;
req.MaximumAutomaticRedirections = 10;
req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
req.Method = WebRequestMethods.Http.Get;
using (var response = (HttpWebResponse) req.GetResponse())
{ …Run Code Online (Sandbox Code Playgroud) 如何两次读取 HttpWebResponse?有可能吗?
我的代码不起作用,也respStream.Position = 0;没有帮助。
有什么线索吗?
var data = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)data.GetResponse();
var respStream = response.GetResponseStream();
string responseText;
using (var reader = new StreamReader(respStream, encoding))
{
responseText = reader.ReadToEnd().Trim();
}
// Do something and read it again
using (var reader = new StreamReader(respStream, encoding))
{
responseText = reader.ReadToEnd().Trim();
}
Run Code Online (Sandbox Code Playgroud) httpwebresponse ×10
c# ×7
.net ×2
http ×2
streamreader ×2
c#-4.0 ×1
encoding ×1
excel ×1
header ×1
httpserver ×1
javascript ×1
json ×1
location ×1
redirect ×1
rest ×1
rfc ×1
web ×1
webrequest ×1