url源码得到302(http代码302)
本文目录一览:
- 1、为什么HttpClient请求返回400,URL请求返回302正常
- 2、request.AllowAutoRedirect=true时,是否还能获得301/302状态码?
- 3、如何通过HttpURLConnection得到http 302的跳转地址
- 4、dota2错误代码302无法载入此 URL,主机名或格式错误
- 5、怎么获取Url经过302跳转之后的真实地址
为什么HttpClient请求返回400,URL请求返回302正常
GET方式提交的数据超长了,不要用GET方式。换成POST方式提交。
把URL的参数提取出来,不要写到URL里面。
是不是如楼上说的,长度超限制了。Get方式长度限制为1024个字节。
我在用android开发时也碰到过相似情况,通过HttpURLConnection获取网页内容时,发出请求一直返回400 。后来查下来是服务端跳转了,设置setInstanceFollowRedirects为false就行。不清楚你是不是类似的原因。
public static void main(String[] args) {
try {
String s = ";sn=863637021737296clk=1";
URL u = new URL(s);
HttpURLConnection openConnection = (HttpURLConnection) u.openConnection();
int responseCode = openConnection.getResponseCode();
InputStream inputStream = openConnection.getInputStream();
System.out.println(responseCode);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
request.AllowAutoRedirect=true时,是否还能获得301/302状态码?
这个很简单的,你稍等,我写个示例 给你
private string GetWebString(string url)
{
HttpWebRequest h = (HttpWebRequest)HttpWebRequest.Create(url);
h.AllowAutoRedirect = false;
HttpWebResponse r = (HttpWebResponse)h.GetResponse();
//判断是否重定向 Ambiguous 300 Found 302 Moved 301
if (r.StatusCode == HttpStatusCode.Ambiguous || r.StatusCode == HttpStatusCode.Found || r.StatusCode == HttpStatusCode.Moved)
{
string newUrl = r.Headers["Location"];//获取重定向的网址
if (!string.IsNullOrEmpty(newUrl))
{
//此处做你的处理
r.Close();
//获取源码
return GetWebString(newUrl);
}
}
else
{
using (System.IO.StreamReader read = new System.IO.StreamReader(r.GetResponseStream()))
{
string value = read.ReadToEnd();
r.Close();
return value;
}
}
}
如何通过HttpURLConnection得到http 302的跳转地址
如果不想直接跳转到目标地址,想对中间的Location做些处理则可以通过HttpURLConnection实现。 // 必须设置false,否则会自动redirect到Location的地址 conn.setInstanceFollowRedirects(false);
[java] view plaincopyprint?
package com.zuidaima;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* 如何通过HttpURLConnection得到http 302的跳转地址
*
* @author javaniu
*
*/
public class Http302 {
public static void main(String[] args) {
try {
String url = "";
System.out.println("访问地址:" + url);
URL serverUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) serverUrl
.openConnection();
conn.setRequestMethod("GET");
// 必须设置false,否则会自动redirect到Location的地址
conn.setInstanceFollowRedirects(false);
conn.addRequestProperty("Accept-Charset", "UTF-8;");
conn.addRequestProperty("User-Agent",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Firefox/3.6.8");
conn.addRequestProperty("Referer", "");
conn.connect();
String location = conn.getHeaderField("Location");
serverUrl = new URL(location);
conn = (HttpURLConnection) serverUrl.openConnection();
conn.setRequestMethod("GET");
conn.addRequestProperty("Accept-Charset", "UTF-8;");
conn.addRequestProperty("User-Agent",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Firefox/3.6.8");
conn.addRequestProperty("Referer", "");
conn.connect();
System.out.println("跳转地址:" + location);
} catch (Exception e) {
e.printStackTrace();
}
}
}
dota2错误代码302无法载入此 URL,主机名或格式错误
该问题是因为dota2游戏缺失部分dll文件,通过DX修复工具能解决。步骤如下:
1、直接在主界面中,选择检测并修复跳转。
2、如果没问题,就进入相关的进程。
3、下一步,继续确定修复完成。
4、这个时候,需要点击桌面对应的快捷方式。
5、会弹出新的窗口,启动运行DOTA 2的按钮。
6、这样一来等得到图示的结果以后,即可实现要求了。
怎么获取Url经过302跳转之后的真实地址
遇到个需求,需要自己获取到302代码,且要根据返回的跳转地址从新跳转到相应的地址。
如果不想直接跳转到目标地址,想对中间的Location做些处理则可以通过HttpURLConnection实现。实现方法是conn.setInstanceFollowRedirects(false);然后在获取到response之后,发现resposnecode为302时,用以下方法取出跳转地址,String location= conn.getHeaderField("Location");然后再根据新的地址跳转即可。