1. 如何用java通過POST方法向HTTP介面傳遞數據
這是corejava2的例子x0dx0aURLConnectionconnection=url.openConnection();//url為http伺服器地址x0dx0aconnection.setDoOutput(true);x0dx0aPrintWriteroutx0dx0a=newPrintWriter(connection.getOutputStream());//獲得輸出流x0dx0a//向伺服器傳遞參數x0dx0aEnumerationenum=nameValuePairs.keys();x0dx0awhile(enum.hasMoreElements())x0dx0a{Stringname=(String)enum.nextElement();x0dx0aStringvalue=nameValuePairs.getProperty(name);x0dx0acharch;x0dx0aif(enum.hasMoreElements())ch='&'elsech='\n'x0dx0aout.print(name+"="x0dx0a+URLEncoder.encode(value)+ch);x0dx0aSystem.out.println(name+value);x0dx0a}x0dx0ax0dx0aout.close();x0dx0a//獲取輸入流x0dx0aBufferedReaderin;x0dx0atryx0dx0a{in=newBufferedReader(newx0dx0aInputStreamReader(connection.getInputStream()));x0dx0a}x0dx0acatch()x0dx0a{InputStreamerrx0dx0a=((HttpURLConnection)connection).getErrorStream();x0dx0aif(err==null)throwexception;x0dx0ain=newBufferedReader(newInputStreamReader(err));x0dx0a}x0dx0aStringBufferresponse=newStringBuffer();x0dx0aStringline;x0dx0a//讀取數據x0dx0awhile((line=in.readLine())!=null)x0dx0aresponse.append(line+"\n");x0dx0ax0dx0ain.close();x0dx0areturnresponse.toString();x0dx0a}x0dx0a}
2. java程序如何獲取POST方式提交的數據
你好,你說的是html或jsp中的表單向伺服器中提交請求吧,在Servlet中,你可以直接使用request.getParamter("參數名稱") ;就可以接收到對應的參數了。
3. 微信支付成功後返回postData xml 用戶信息java怎麼獲取
java有dom4j 去解析xml。
publicstaticMap<String,String>parseXml(HttpServletRequestrequest)
throwsException{
//解析結果存儲在HashMap
Map<String,String>map=newHashMap<String,String>();
InputStreaminputStream=request.getInputStream();
//讀取輸入流
SAXReaderreader=newSAXReader();
Documentdocument=reader.read(inputStream);
//得到xml根元素
Elementroot=document.getRootElement();
//得到根元素的所有子節點
List<Element>elementList=root.elements();
//遍歷所有子節點
for(Elemente:elementList)
map.put(e.getName(),e.getText());
//釋放資源
inputStream.close();
inputStream=null;
returnmap;
}
後面取值不用我寫了把。Map類型
4. java如何接收無參數名的post數據
怎麼會沒有參數名字呢,
post 提交的時候,
是有參數的,不過他不是在url地址的後面
而是http協議把它規坦掘定了在http 頭之後碼信賀,在頭裡面,會指定內容的長度,
然後頭完了。會空一行。接著寫 內容。
java當然可以實現這個功能遲派。
這要用到xml,對http協議進行解析,
5. Java實現一個HTTP基於xml的post請求 如何在struts2 action獲取
//用戶名校驗方法
//這個方法是用XMLHTTPRequest對象進行非同步數據交互
var xmlhttp;
function verify(){
//alert(xmlhttp.readyState);
//×××××××××readyState變更0.1.2.3.4
//1.使用dom的方式獲取文本框中的值
//是dom中獲取元素節點的一種方法一個元素節點對應hrml中的一個標簽,如果<input>.value可以獲得一個元素節點的value屬性值
//注意取值.value;否則前台取不到本想取到的值
var userName = document.getElementById("userName").value;
//2.創建xmlhttpRequest對象
//需要針對不同瀏覽器建立不同的代碼
//Window.XMLHttpRequest盡量放置在window.ActiveXObject之前
if(window.XMLHttpRequest){
//針對firefox,mozillar,opera,safari,ie7,ie8
xmlhttp = new XMLHttpRequest();
//修正mozillar瀏覽器的bug語句
if (xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){
//針對的是ie6,ie5.5,ie5
//兩個可以用於創建XMLHTTPRequset對象的控制項名稱,保存在一個js的數組中
//排在前面的版本較新
var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i = 0;i<activexName.length;i++){
try{
//取出一個控制項的名進行創建,如果創建成功就停止循環
//如果創建失敗,會拋出異常,然後可以繼續循環,繼續嘗試創建
xmlhttp = new ActiveXObject(activexName[i]);
break;
}catch(e){
}
}
//確認XMLHTTPRequest對象創建成功
}
if (!xmlhttp){
alert("XMLHttpRequest對象創建失敗!!");
return;
}else{
alert("xmlhttp");
}
//2.注冊回調函數
//注冊回調函數時候,只需要函數名,不要加括弧
xmlhttp.onreadystatechange = callback;
////3.設置鏈接信息
////第一個參數表示http的請求方式,支持所有的http請求方式,主要使用個體和post方法
////第二個參數表示請求的url地址,get方式請求的參數也在url中
////第三個參數表示採用非同步還是同步交互方式,true表示非同步
//xmlhttp.open("GET","AJAXXMLServer?name=" + userName,true);
//post請求方式的代碼
xmlhttp.open("POST","AJAXXMLServer",true);
//post方式需要自己設置http請求頭
xmlhttp.setRequestHeader("Content-Tpye","application/x-www-form-urlencoded");
//post方式發送數據
xmlhttp.send("name= " + userName);
////4.發送數據,開始和伺服器端進行交互
////同步方式下,send這句話在伺服器端數據回來後才執行
////非同步方式下,send這句話會立即完成執行
////get方式下的要發送數據都已經在url中了。因此不需要在詞單獨send內容了
//xmlhttp.send(null);
}
//回調函數
function callback(){
//5.接收響應數據
//判斷對象的狀態是交互完成的即為4
if (xmlhttp.readyState == 4){
//判斷http的交互是否成功
if (xmlhttp.status == 200){
//使用responseXML的方式來接受xml數據的dom對象
var domObj = xmlhttp.responseXML;
//<message>是文本信息</message>
//dom利用getElementsByTagName可以根據標簽來獲取元素節點。返回的是一個數組
var messageNodes = domObj.getElementsByTagName("message");
if (messageNodes.length > 0){
//獲取message節點中的文本內容
//註:無效取值用法:::var responseMessage = messageNodes[0].innerHTML;
//首先messaNodes[0]獲取的的是message標簽所獲取的文本信息,即元素節點。
//message標簽中的文本在dom中是message標簽所對應的元素節點的子節點,firstChild可以獲取當前節點的第一個子節點
//通過以下方式就可以獲取到文本內容多對應的節點
var textNode = messageNodes[0].firstChild;
//對於文本節點來說,可以通過nodeValue的方式返迴文本節點的文本內容
var responseMessage = textNode.nodeValue;
alert("-----------------");
//將數據顯示在頁面上
//通過dom的方式找到div標簽所對應的元素節點
var divNode = document.getElementById("result");
//alert(divNode);
//設置元素節點中的html內容
divNode.innerHTML = responseMessage;
}else{
alert("XML數據格式錯誤,原始文本內容為"+ xmlhttp.responseText);
}
}else{
alert("出錯了!");
}
}
}
這樣返回的是一個數據,你看看對你修改成返迴文件有沒有用
6. Java請求一個URL。獲取網站返回的數據。通過POST請求
packagewzh.Http;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.URL;
importjava.net.URLConnection;
importjava.util.List;
importjava.util.Map;
publicclassHttpRequest{
/**
*向指定URL發送GET方法的請求
*
*@paramurl
*發送請求的URL
*@paramparam
*請求參數,請求參數應該是name1=value1&name2=value2的形式。
*@returnURL所代表遠程資源的響應結果
*/
publicstaticStringsendGet(Stringurl,Stringparam){
Stringresult="";
BufferedReaderin=null;
try{
StringurlNameString=url+"?"+param;
URLrealUrl=newURL(urlNameString);
//打開和URL之間的連接
URLConnectionconnection=realUrl.openConnection();
//設置通用的請求屬性
connection.setRequestProperty("accept","*/*");
connection.setRequestProperty("connection","Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
//建立實際的連接
connection.connect();
//獲取所有響應頭欄位
Map<String,List<String>>map=connection.getHeaderFields();
//遍歷所有的響應頭欄位
for(Stringkey:map.keySet()){
System.out.println(key+"--->"+map.get(key));
}
//定義BufferedReader輸入流來讀取URL的響應
in=newBufferedReader(newInputStreamReader(
connection.getInputStream()));
Stringline;
while((line=in.readLine())!=null){
result+=line;
}
}catch(Exceptione){
System.out.println("發送GET請求出現異常!"+e);
e.printStackTrace();
}
//使用finally塊來關閉輸入流
finally{
try{
if(in!=null){
in.close();
}
}catch(Exceptione2){
e2.printStackTrace();
}
}
returnresult;
}
/**
*向指定URL發送POST方法的請求
*
*@paramurl
*發送請求的URL
*@paramparam
*請求參數,請求參數應該是name1=value1&name2=value2的形式。
*@return所代表遠程資源的響應結果
*/
publicstaticStringsendPost(Stringurl,Stringparam){
PrintWriterout=null;
BufferedReaderin=null;
Stringresult="";
try{
URLrealUrl=newURL(url);
//打開和URL之間的連接
URLConnectionconn=realUrl.openConnection();
//設置通用的請求屬性
conn.setRequestProperty("accept","*/*");
conn.setRequestProperty("connection","Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
//發送POST請求必須設置如下兩行
conn.setDoOutput(true);
conn.setDoInput(true);
//獲取URLConnection對象對應的輸出流
out=newPrintWriter(conn.getOutputStream());
//發送請求參數
out.print(param);
//flush輸出流的緩沖
out.flush();
//定義BufferedReader輸入流來讀取URL的響應
in=newBufferedReader(
newInputStreamReader(conn.getInputStream()));
Stringline;
while((line=in.readLine())!=null){
result+=line;
}
}catch(Exceptione){
System.out.println("發送POST請求出現異常!"+e);
e.printStackTrace();
}
//使用finally塊來關閉輸出流、輸入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOExceptionex){
ex.printStackTrace();
}
}
returnresult;
}
}
//函數調用時填入URL和參數(參數非必須)就可以獲取返回的數據,發送post請求調用示例
Stringresult=HttpRequest.sendPost("http://api.map..com/telematics/v3/weather?location=%E5%8C%97%E4%BA%AC&output=json&ak=","")