java訪問http請求
『壹』 java HTTP請求 處理
javax.servlet.http.HttpResponse類用於產生返回頁面.通過HttpResponse定義的方法getOutputStream()可以獲得ServletOutputStream的實例,這樣用戶就可以利用ServletOutputStream.write方法向輸出流中寫入返回頁面的內容. 但是ServletOutputStream使用的是預設的編碼方式,如果要使返回頁面中的中文字 符能夠正常顯示,最好顯示地指定所用的字元編碼方式. 通常需要構造一個 OutputStreamWriter , 常式如下:
public void doGet (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setContentType("text/html");
ServletOutputStream out = res.getOutputStream();
OutputStreamWriter ow = new OutputStreamWriter(out,"GB2312");
ow.write("這是測試");
ow.flush();
ow.close();
}
『貳』 JAVA 使用Socket 訪問HTTP伺服器
你好。訪問Web伺服器(例:www..com),需要根據Http協議發送相關請求頭,否則Web伺服器不會處理。這種處理就類似於你的代碼:(line = read.readLine()) != null。當然Web伺服器驗證的不是這個。
HTTP協議這里不會詳解,有需要可以查詢相關資料。
在你的代碼中加入:
longstart=System.currentTimeMillis();
SocketAddressaddress=newInetSocketAddress(InetAddress.getByName("www.javathinker.org").getHostAddress(),80);
Socketsocket=newSocket();
socket.connect(address);
System.out.println("連接成功-"+socket.getInetAddress()+":"
+(System.currentTimeMillis()-start)+"ms");
/**編寫簡單HTTP請求頭*/
StringBuildersb=newStringBuilder();
sb.append("GET/HTTP/1.1 ")
.append("Host:www.javathinker.org ")
.append("Connection:Close ");
OutputStreamout=socket.getOutputStream();
out.write(sb.toString().getBytes());
out.flush();
/**發送完成後flush*/
BufferedReaderread=newBufferedReader(newInputStreamReader(
socket.getInputStream()));
/**循環等待read接收*/
booleanb=true;
while(b){
if(read.ready()){
Stringline=null;
while((line=read.readLine())!=null){
System.out.println(line);
}
b=false;
}
}
『叄』 java 怎麼接收http請求
用servlet接收。
具體步驟是寫一個類繼承HttpServlet,如果是接收get請求就重寫doGet(HttpServletRequest,HttpServletResponse),接收post就重寫doPost(HttpServletRequest,HttpServletResponse),共同處理post和get就重寫service(HttpServletRequest,HttpServletResponse)
其次在web.xml定義servlet標簽,以及你這個servlet要處理的請求mapping
最後把項目部署在tomcat之類的web容器中即可。
如果使用框架的話就另當別論了,比如spring 的DispatcherServlet。當然你也可以自己寫servlet。
『肆』 如何在java中發起http和https請求
1.寫http請求方法
[java] view plain
//處理http請求 requestUrl為請求地址 requestMethod請求方式,值為"GET"或"POST"
public static String httpRequest(String requestUrl,String requestMethod,String outputStr){
StringBuffer buffer=null;
try{
URL url=new URL(requestUrl);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod(requestMethod);
conn.connect();
//往伺服器端寫內容 也就是發起http請求需要帶的參數
if(null!=outputStr){
OutputStream os=conn.getOutputStream();
os.write(outputStr.getBytes("utf-8"));
os.close();
}
//讀取伺服器端返回的內容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
return buffer.toString();
}
『伍』 如何使用HttpClient包實現JAVA發起HTTP請求
publicclassHttpClientUtil{
publicstaticStringdoGet(Stringurl,Map<String,String>param){
//創建Httpclient對象
CloseableHttpClienthttpclient=HttpClients.createDefault();
StringresultString="";
CloseableHttpResponseresponse=null;
try{
//創建uri
URIBuilderbuilder=newURIBuilder(url);
if(param!=null){
for(Stringkey:param.keySet()){
builder.addParameter(key,param.get(key));
}
}
URIuri=builder.build();
//創建httpGET請求
HttpGethttpGet=newHttpGet(uri);
//執行請求
response=httpclient.execute(httpGet);
//判斷返回狀態是否為200
if(response.getStatusLine().getStatusCode()==200){
resultString=EntityUtils.toString(response.getEntity(),"UTF-8");
}
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
if(response!=null){
response.close();
}
httpclient.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
returnresultString;
}
publicstaticStringdoGet(Stringurl){
returndoGet(url,null);
}
publicstaticStringdoPost(Stringurl,Map<String,String>param){
//創建Httpclient對象
CloseableHttpClienthttpClient=HttpClients.createDefault();
CloseableHttpResponseresponse=null;
StringresultString="";
try{
//創建HttpPost請求
HttpPosthttpPost=newHttpPost(url);
//創建參數列表
if(param!=null){
List<NameValuePair>paramList=newArrayList<>();
for(Stringkey:param.keySet()){
paramList.add(newBasicNameValuePair(key,param.get(key)));
}
//模擬表單
UrlEncodedFormEntityentity=newUrlEncodedFormEntity(paramList);
httpPost.setEntity(entity);
}
//執行http請求
response=httpClient.execute(httpPost);
System.out.println(response.getStatusLine());
resultString=EntityUtils.toString(response.getEntity(),"utf-8");
System.out.println(resultString);
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
response.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
returnresultString;
}
publicstaticStringdoPost(Stringurl){
returndoPost(url,null);
}
publicstaticStringdoPostJson(Stringurl,Stringjson){
//創建Httpclient對象
CloseableHttpClienthttpClient=HttpClients.createDefault();
CloseableHttpResponseresponse=null;
StringresultString="";
try{
//創建HttpPost請求
HttpPosthttpPost=newHttpPost(url);
//創建請求內容
StringEntityentity=newStringEntity(json,ContentType.APPLICATION_JSON);
httpPost.setEntity(entity);
//執行http請求
response=httpClient.execute(httpPost);
resultString=EntityUtils.toString(response.getEntity(),"utf-8");
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
response.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
returnresultString;
}
}
『陸』 java 怎麼接收http請求
你需要搭建一個伺服器,才能接受http請求。
『柒』 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請求問題(我想實現和伺服器進行一次連接時發送兩次請求)
我覺得你這個問題的解決應該是你的程序做一次這個網站的登陸,而且這個登陸的動作應該是需要發生在你這段代碼以前,因為你這段代碼的動作其實只是訪問了一下那個網站,但是沒有任何的用戶或者是其他的信息。
一般來說你登陸以後,你會獲得一個token,用那個token就可以讓網站認為你已經登陸,然後改密碼什麼就好辦了。建議你先抓一下IE的包看看是人家的通信是怎麼樣的,然後用java做就好了。或者是那個網站有開發者文檔就最好了。