① java 怎么接收http请求
HttpURLConnection mHttpURLConnection = null;
URL mUrl = null;
InputStream inputStream = null;
try {
String url = UrlEncode(mFileType.getStrUrl(), "UTF-8");
//mUrl = new URL(mFileType.getStrUrl());
mUrl = new URL(url);
mHttpURLConnection = (HttpURLConnection) mUrl.openConnection();
mHttpURLConnection.setAllowUserInteraction(true);
mHttpURLConnection.setRequestMethod("GET");
mHttpURLConnection.setRequestProperty("Range", "bytes=" + startPos
+ "-" + endPos);
mHttpURLConnection.setRequestProperty("Connection", "Keep-Alive");
int responseCode = mHttpURLConnection.getResponseCode();
long length = mHttpURLConnection.getContentLength();
// 判断请求是否成功处理
if (responseCode == HttpStatus.SC_OK||responseCode == HttpStatus.SC_PARTIAL_CONTENT) {
inputStream = mHttpURLConnection.getInputStream();
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
② 如何通过抓包工具fiddler获取java程序的http请求
抓包工具fidder是一个很轻巧的可以获取浏览器,程序的http,https请求的软件。
网络地址:http://ke..com/view/868685.htm
官网地址:http://fiddler2.com/
firefox的fidder插件
而Java程序需要设置proxy才能生效:
[java] view plain
Proxy proxy = new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress("127.0.0.1", 8888));
URL serverUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) serverUrl.openConnection(proxy);
详细代码请下载。
[java] view plain
package com.zuidaima.http;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
/**
*@author www.zuidaima.com
**/
public class Http302Redirect {
public static void main(String[] args) {
try {
String url = "http://www.zuidaima.com/";
System.out.println("访问地址:" + url);
Proxy proxy = new Proxy(java.net.Proxy.Type.HTTP,
new InetSocketAddress("127.0.0.1", 8888));
URL serverUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) serverUrl
.openConnection(proxy);
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", "http://javaniu.com/");
conn.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
StringBuffer buffer = new StringBuffer();
String line = reader.readLine();
while (line != null) {
buffer.append(line).append("\r\n");
line = reader.readLine();
}
reader.close();
conn.disconnect();
System.out.println(buffer);
} catch (Exception e) {
e.printStackTrace();
}
}
}
③ java怎样获取http请求的body
读取Body使用request.getReader(),但getReader获取的是,需要把它转换成字符串,下面是转换的方法
public class TestController {
@RequestMapping("/a")
protected void doPost(HttpServletRequest request,
HttpServletResponse response, BufferedReader br)
throws ServletException, IOException {
//Header部分
System.out.print(request.getHeaderNames());
Enumeration<?> enum1 = request.getHeaderNames();
while (enum1.hasMoreElements()) {
String key = (String) enum1.nextElement();
String value = request.getHeader(key);
System.out.println(key + "\t" + value);
}
//body部分
String inputLine;
String str = "";
try {
while ((inputLine = br.readLine()) != null) {
str += inputLine;
}
br.close();
} catch (IOException e) {
System.out.println("IOException: " + e);
}
System.out.println("str:" + str);
}
④ java 接受http请求
使用servlet
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Test() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//接收get请求
// 这里写你接收request请求后要处理的操作
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//接收post请求
// 这里写你接收request请求后要处理的操作
}
}
⑤ java http请求
可能是这个网站做了权限校验啥的吧,你在浏览器是先登录以后再请求的这个接口,但是你的JAVA客户端没有做登录,直接请求,被认为是非法请求,所以就不给你返回数据了
⑥ 如何通过抓包工具fiddler获取java程序的http请求
fiddler实际上是通过代理的方式来工作的。默认端口是8888,所以用来请求http的客户端,需要设定代理,就能被截获并记录。这种方式必须依赖fiddler进程正常工作。
以下是java设置代理的一种方式。具体要看使用什么客户端程序了。不同的客户端程序设置代理的方式肯定不一样。
Proxyproxy=newProxy(java.net.Proxy.Type.HTTP,newInetSocketAddress("127.0.0.1",8888));
URLserverUrl=newURL(url);
HttpURLConnectionconn=(HttpURLConnection)serverUrl.openConnection(proxy);
样例:
packagecom.http;
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.net.HttpURLConnection;
importjava.net.InetSocketAddress;
importjava.net.Proxy;
importjava.net.URL;
publicclassHttp302Redirect{
publicstaticvoidmain(String[]args){
try{
Stringurl="http://weibo.com/1253711052";
System.out.println("访问地址:"+url);
Proxyproxy=newProxy(java.net.Proxy.Type.HTTP,
newInetSocketAddress("127.0.0.1",8888));
URLserverUrl=newURL(url);
HttpURLConnectionconn=(HttpURLConnection)serverUrl
.openConnection(proxy);
conn.setRequestMethod("GET");
conn.addRequestProperty("Accept-Charset","UTF-8;");
conn.addRequestProperty("User-Agent",
"Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.2.8)Firefox/3.6.8");
conn.addRequestProperty("Referer","http://weibo.com");
conn.connect();
BufferedReaderreader=newBufferedReader(newInputStreamReader(
conn.getInputStream()));
StringBufferbuffer=newStringBuffer();
Stringline=reader.readLine();
while(line!=null){
buffer.append(line).append(" ");
line=reader.readLine();
}
reader.close();
conn.disconnect();
System.out.println(buffer);
}catch(Exceptione){
e.printStackTrace();
}
}
}
⑦ java中获取http请求中参数的值
public void getShopShow(HttpServletRequest request){
// 源 获取一个mapper的集合
Map<String, String[]> parameterMap = request.getParameterMap();
// 获取单个的数据
String name = request.getParameter("name");
}