javapost文件
㈠ java 介面調用,根據介面文檔寫測試,用post方法,剛怎麼做啊,有個完整的例子么
可使用android自帶的httpclient框架實現。
1. GET 方式傳遞參數
//先將參數放入List,再對參數進行URL編碼
List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "數據")); //增加參數1
params.add(new BasicNameValuePair("param2", "value2"));//增加參數2
String param = URLEncodedUtils.format(params, "UTF-8");//對參數編碼
String baseUrl = "伺服器介面完整URL";
HttpGet getMethod = new HttpGet(baseUrl + "?" + param);//將URL與參數拼接
HttpClient httpClient = new DefaultHttpClient();
try {
HttpResponse response = httpClient.execute(getMethod); //發起GET請求
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //獲取響應碼
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//獲取伺服器響應內容
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
2. POST方式 方式傳遞參數
//和GET方式一樣,先將參數放入List
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));//增加參數1
params.add(new BasicNameValuePair("param2", "第二個參數"));//增加參數2
try {
HttpPost postMethod = new HttpPost(baseUrl);//創建一個post請求
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //將參數填入POST Entity中
HttpResponse response = httpClient.execute(postMethod); //執行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //獲取響應碼
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //獲取響應內容
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
㈡ java http post 怎麼設置 raw格式
調試微信推廣支持中二維碼生成api的介面,使用chrome瀏覽器的postman插件,post請求時有一個選項是form-data,或者raw,使用raw可以請求成功,from-data不知道怎麼組裝key和value所以一直失敗。非常不明白raw是什麼意思,google網路都沒有相關的解釋。後來研究發現,其實raw方式使用的是純字元串的數據上傳方式,所以在POST之前,可能需要手工的把一些json/text/xml格式的數據轉換成字元串,是一種post原始請求,區別於form-data這種常用的key-value方式。
public static String result; public static void httpTest() throws ClientProtocolException, IOException { String token = "XRhjxAJZG3rFlPLg"; String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token; String json = "{"action_name":"QR_LIMIT_SCENE","action_info":{"scene":{"scene_id":234}}}"; HttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost(url); StringEntity postingString = new StringEntity(json);// json傳遞 post.setEntity(postingString); post.setHeader("Content-type", "application/json"); HttpResponse response = httpClient.execute(post); String content = EntityUtils.toString(response.getEntity()); // Log.i("test",content); System.out.println(content); result = content; }
以上代碼中需要導入
import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils;
Android中自帶org.apache.http相關庫文件,所以可以快捷鍵(ctrl+shift+o)一次導入成功。
㈢ 如何在java中發送post請求
package com.test;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public class D {
public static void main(String[] args){
List<NameValuePair> nvps= new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("id", "1"));
String url="https://www.hao123.com/";
HttpClient httpClient = null;
String response="";
try {
HttpPost post = new HttpPost(url);
post.setHeader("Connection", "close");
httpClient = new DefaultHttpClient();
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpres= httpClient.execute(post);
if (httpres.getStatusLine().getStatusCode() >= 300) {
System.out.println("Request Failed,Code:" + httpres.getStatusLine().getStatusCode() + ",URL:" + url);
}
response = EntityUtils.toString(httpres.getEntity(), "utf-8");
}catch(Exception e){
e.printStackTrace();
}finally{
if(httpClient!=null){
httpClient.getConnectionManager().shutdown();
}
}
System.out.println(response);
}
}
需要httpclient-4.1.3.jar,httpcore-4.1.4.jar和commons-logging-1.1.1.jar
㈣ java中用一段代碼模擬post提交文件後,再寫個java程序接收這個文件,高分急求,坐等
在JAVA裡面模擬HTTP訪問可以使用很多開源的框架,apache的httpclient就很好用,可以模擬使用GET和POST提交方式,至於PHP嗎,這個我就沒有研究過了
㈤ JAVA WEB 的get和post分別是什麼格式
GET 是在URL路徑直接拼接參數的形式進行的實現,也就是說數據是暴露在請求地址的,並且長度不能太長,通常文件流等實現起來有困難。
POST是只能看見請求的地址,其餘的參數是直接在瀏覽器內部進行的顯示和響應,數據相對來說是不暴露的,更安全一些,並且可以傳輸大量數據。
備註:通過以上說明,推薦實際應用中用Post請求進行開發。
㈥ 求POST上傳文件的代碼
使用smartuplaod組件的 部分代碼 原因很簡單 這里發不完全部的
uploadFile.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="com.jspsmart.upload.*"%>
<%
// 設定請求編碼方式,否則遇到中文就會亂碼
request.setCharacterEncoding("gb2312");
%>
<html>
<head>
<title>上傳文件實例</title>
</head>
<body>
<h2>上傳文件實例</h2>
<hr>
請選擇上傳文件數量:
<select id="number" onchange="buildFileInput()">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
</select>
<form name="form1" enctype="multipart/form-data" action="upload_do.jsp" method="post">
<div id="files"></div>
<input type="submit" name="Submit" value="提交" />
</form>
</body>
<script language="javascript">
//根據選擇的文件數量構造文件輸入框列表
function buildFileInput(){
//取得文件數量下拉列表值
var num = document.all.number.value;
//將現有的文件輸入框清除
clearFileInput();
//構造出新的文件輸入框列表
for (var i=0;i<num;i++){
//創建一個div標簽節點
filediv = document.createElement("div");
//創建一個文本節點
labeltext = document.createTextNode("第"+(i+1)+"個文件:");
//創建一個文件輸入框節點
fileinput = document.createElement("input");
fileinput.type = "file";
fileinput.name = "file"+i;
//創建一個文本節點
memotext = document.createTextNode(" 第"+(i+1)+"個文件備註:");
//創建一個文本輸入框節點
memoinput = document.createElement("input");
memoinput.type = "text";
memoinput.name = "memo"+i;
//將文本節點追加成div標簽節點的子節點
filediv.appendChild(labeltext);
//將文件輸入框節點追加成div標簽節點的子節點
filediv.appendChild(fileinput);
//將文本節點追加成div標簽節點的子節點
filediv.appendChild(memotext);
//將文本輸入框節點追加成div標簽節點的子節點
filediv.appendChild(memoinput);
//將div標簽節點追加成files的子節點
document.all.files.appendChild(filediv);
}
}
//將現有的文件輸入框清除
function clearFileInput(){
while (document.all.files.childNodes.length>0)
document.all.files.removeChild(document.all.files.childNodes[0]);
}
//初始化文件輸入框列表
buildFileInput();
</script>
</html>
㈦ java代碼發送post請求,並接收xml文件。。。 發送請求時要帶參數
用ajax來發送,ajax返回的就是xml或者json.
㈧ java http post 同時發送文件流與數據
您好,提問者:
首先表單、文件同時發送那麼肯定是可以的,關於獲取的話很難了,因為發送文件的話form必須設置為:multipart/form-data數據格式,默認為:application/x-www-form-urlencoded表單格式。我們稱之為二進制流和普通數據流。
剛才說了<form的entype要改為multipart/form-data才能進行發送文件,那麼這個時候你表單的另外數據就也會被當成二進制一起發送到服務端。
獲取讀取過來的內容如下:
//拿到用戶傳送過來的位元組流
InputStreamis=request.getInputStream();
byte[]b=newbyte[1024];
intlen=0;
while((len=is.read(b))!=-1){
System.out.println(newString(b,0,len));
}
上面如圖的代碼,我們發現發送過來的表單數據跟文件數據是混亂的,我們根本沒辦法解析(很麻煩),這個時候我們就需要用到第三方輔助(apache 提供的fileupload.jar)來進行獲取。
這個網上有很多代碼的,如果有什麼不明白可以去自行網路,或者追問,我這里只是給你提供的思路,希望理解,謝謝!
㈨ java後台post方法上傳文件
/** * 執行post請求並將返回內容轉為json格式返回 */public static JsonObject doPost(String url, JsonObject message)throws WeiXinException {JsonObject jo = null;PrintWriter out = null;InputStream in = null;try {if (url.startsWith("https")){//https方式提交需要SSLContext sc = SSLContext.getInstance("SSL");sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },new java.security.SecureRandom());URL console = new URL(url);HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();conn.setSSLSocketFactory(sc.getSocketFactory());conn.setHostnameVerifier(new TrustAnyHostnameVerifier());conn.connect();in = conn.getInputStream();}else{in = new URL(url).openStream();}// 打開和URL之間的連接URLConnection conn = new URL(url).openConnection();// 設置通用的請求屬性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 發送POST請求必須設置如下兩行conn.setDoOutput(true);conn.setDoInput(true);// 獲取URLConnection對象對應的輸出流out = new PrintWriter(conn.getOutputStream());// 發送請求參數out.print(message.toString());// flush輸出流的緩沖out.flush();// POST請求out.flush();out.close();in = conn.getInputStream();jo = JSON.parse(getContext(in));doExeption(jo);} catch (MalformedURLException e) {e.printStackTrace();} catch (ProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (KeyManagementException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();} finally {if (out != null) {out.flush();out.close();}if (in != null ){try {in.close();} catch (IOException e) {e.printStackTrace();}}}return jo;}