當前位置:首頁 » 文件管理 » httpclientpost上傳

httpclientpost上傳

發布時間: 2022-05-21 18:46:50

Ⅰ 如何使用POST上傳的二進制數據

這個不就是文件上傳嘛
給你個servlet3.0的文件上傳
頁面表單
<form action="sf" enctype="multipart/form-data" method="get">
username: <input type="text" name="username" /><br>
file: <input type="file" name="filename" /><br>
<input type="submit" value="Submit" />
</form>

servlet頭註解配置

@WebServlet("/sf")
@MultipartConfig
public class SingleFileUpload extends HttpServlet {

doPost 方法
java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Enumeration<String> heads = request.getHeaderNames();
System.out.println("request.getHeaderNames()");
while (heads.hasMoreElements()) {
String header = heads.nextElement();
System.out.println(header + "=" + request.getHeader(header));
}
Part part = request.getPart("filename");
Collection<String> headerNames = part.getHeaderNames();
System.out.println("part.getHeaderNames()");
for (String header : headerNames) {
System.out.println(header + "=" + part.getHeader(header));
}
InputStream is = part.getInputStream();
String filename = new String(getFilename(part).getBytes(), "UTF-8");
File file = new File("D:\\fileupload");
if (!file.exists() || !file.isDirectory()) {
file.mkdir();
}

FileOutputStream fos = new FileOutputStream(new File(file + File.separator + filename));
byte[] buf = new byte[1024];
while (is.read(buf) != -1) {
fos.write(buf);
}
fos.flush();
fos.close();
is.close();
PrintWriter out = response.getWriter();
out.println("file upload success");
}

public String getFilename(Part part) {
String contentDispositionHeader = part.getHeader("content-disposition");
String[] elements = contentDispositionHeader.split(";");
for (String element : elements) {
if (element.trim().startsWith("filename")) {
return element.substring(element.indexOf('=') + 1).trim().replace("\"", "");
}
}
return null;
}

Ⅱ httpclient發送post請求訪問需要有用戶名和密碼的登錄界面

1.伺服器認證(Server Authentication)
HttpClient處理伺服器認證幾乎是透明的,僅需要開發人員提供登錄信息(login credentials)。登錄信息保存在HttpState類的實例中,可以通過 setCredentials(String realm, Credentials cred)和getCredentials(String realm)來獲取或設置。
HttpClient內建的自動認證,可以通過HttpMethod類的setDoAuthentication(boolean doAuthentication)方法關閉,而且這次關閉隻影響HttpMethod當前的實例。

2.代理認證(proxy authentication)
除了登錄信息需單獨存放以外,代理認證與伺服器認證幾乎一致。用 setProxyCredentials(String realm, Credentials cred)和 getProxyCredentials(String realm)設、取登錄信息。

3.認證方案(authentication schemes)

是HTTP中規定最早的也是最兼容的方案,遺憾的是也是最不安全的一個方案,因為它以明碼傳送用戶名和密碼。它要求一個UsernamePasswordCredentials實例,可以指定伺服器端的訪問空間或採用默認的登錄信息。

Ⅲ httpclient4 提交post

首先,您應該清楚目標網頁的具體提交規格,是否跟您提交的數據項一致,然後才能採用httpclient4進行數據模擬。比如某些網站會加入一些額外的數值進入瀏覽器,如果參數不匹配,則默認為「網路蜘蛛「,而阻止訪問。

個人推薦您使用firebug或httpwatch之類工具,先自己親自登陸該網站完成一次具體操作,然後截取實際提交的結果,進行分析比對,才能完成httpclient4的數據提交與讀取(說白了,您應該完整的走一次標准流程,然後把標准流程提交的數據全部用httpclient4模擬下來)。

舉個最簡單的例子,如果網站的數據接受方式是get(對應HttpGet),而您偏偏用HttpPost提交數據,那麼能正常獲得結果才怪。另外,某些網站也會對瀏覽器類型,傳遞的Header數據,首次讀取頁面時產生的Session值等等方面有驗證,這些都是需要具體分析的地方,如果數據不匹配,一樣無法正常瀏覽。

Ⅳ 關於asynchttpclient框架的post 提交表單上傳文件怎麼弄

1.添加許可權(訪問網路許可權和讀寫許可權)
2.獲取上傳文件路徑並判斷是否為空
3.若不為空,創建非同步請求對象
4.創建上傳文件路徑
5.執行post請求(指定url路徑,封裝上傳參數,新建AsyncHttpResponseHandler方法)

Ⅳ C#怎麼使用HttpClient來Post數據

HttpClient是對http非同步請求的封裝。
我的這句話你要理解兩個信息,一個是http請求(支持http1.1和http1.2),另一個是非同步,它有自身的好處。
httpClient支持很多verb的,例如GET/POST等等,但其方法上對部分的verb進行了單獨的成員方法封裝,比如GETAsync()方法就是上傳GET,而PostAsync()方法就是上傳Post,類似的還有Delete/Put都是非同步封裝。但事實上有時我們還需要其他的動詞請求時,可以考慮使用SendAsync()成員方法,這個方法中封裝了一個HttpRequestMessage對象,請求前需要構造這個對象,而這個對象中有一個Method的屬性可以支持Get/Put/Post/Delete/Options/Tract/Headrt等常規的動作之外,還可以構造一個自定義的動作。
而在具體的使用上來說,POST時可以查看PostAsync的重載方法,要知道這個的一個非同步的方法以返回時結果其實是非同步的HttpResponseMessage,也就是所謂的Task<HttpResponseMessage>,接收到的對象的Result屬性就是HttpResponseMessage對象。而這個對象中的StatusCode可以幫你確定狀態碼(如200等),而Content你應該知道是什麼東西了,其實就是返回的內容,其實是對應編碼解析後的文本內容。
當然,如果你需要的是流的話,目前除GetStreamAsync之外還沒有其他的辦法,只能使用HttpWebRequest去處理了,畢竟HttpClient是針對http請求的一個輕量級框架,並沒有完成所有的http請求的情況的!
比如你的業務是POST上一個值,返回一個文件,可以考慮使用Get上傳一個指定的參數(處理到Uri中)使用GetStreamAsync方法,返回的是一個Task<Stream>,如果處理的數據較為復雜,或是Post上傳的參數過大(如上傳一個4M以上的文件,返回一個4M以上的文件流時)此時需要考慮使用HttpWebRequest類進行處理,GET上傳數據不能大於4M。
便基本上的httpClient功能是夠用的。

Ⅵ Android中使用HttpPost實現數據與文件同時上傳的功能

第一步:編寫一個Servlet,把接收到的HTTP信息保存在一個文件中,代碼如下:
public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {
//獲取輸入流,是HTTP協議中的實體內容

ServletInputStream sis=request.getInputStream();
//緩沖區

byte buffer[]=new byte[1024];
FileOutputStream fos=new FileOutputStream("d://file.log");

int len=sis.read(buffer, 0, 1024);
//把流里的信息循環讀入到file.log文件中
while( len!=-1 )
{
fos.write(buffer, 0, len);
len=sis.readLine(buffer, 0, 1024);
}
fos.close();
sis.close();
}
第二步:實現如下圖1的的表單頁面,生成一個注冊表單,提交到Servlet中

詳細的代碼如下:

<form action="servlet/ReceiveFile" method="post" enctype="multipart/form-data">
第一個參數<input type="text" name="name1"/> <br/>
第二個參數<input type="text" name="name2"/> <br/>
第一個上傳的文件<input type="file" name="file1"/> <br/>
第二個上傳的文件<input type="file" name="file2"/> <br/>
<input type="submit" value="提交">
</form>
注意了,由於要上傳附件,所以一定要設置enctype為multipart/form-data,才可以實現附件的上傳。
第三步:填寫完信息後按「提交」按鈕後,在D盤下查找file.log文件用記事本打開,數據如下:
-----------------------------7d92221b604bc
Content-Disposition: form-data; name="name1"
hello
-----------------------------7d92221b604bc
Content-Disposition: form-data; name="name2"
world
-----------------------------7d92221b604bc
Content-Disposition: form-data; name="file1"; filename="C:/2.GIF"
Content-Type: image/gif
GIF89a

Ⅶ HttpClient使用HttpPost進行語音文件上傳,但是報java.lang.IllegalArgumentException如圖

這個異常是指方法參數不符合,比如一般來說,寫成jar包的某個方法裡面有一個隨機函數,最大允許輸入100,結果你輸入101,他經過判斷不符合,於是就拋出異常,你仔細檢查你調用其他方法的過程中放入的參數是否有誤

Ⅷ java 怎麼根據httpPost 和httpClient 等,傳圖片到伺服器!

使用Apache提供的HttpClient組件可以實現。其實傳圖片就是用POST方式向伺服器發送數據。

Ⅸ Android 如何用HttpClient 以Post方式提交數據並添加http頭信息

簡單的說
get 請求沒有 請求體,他的頭 可以攜帶參數(數據)發送給伺服器
post 請求 有 頭,有體,但是他的頭不可以攜帶數據,數據只能放到 體裡面
大數據使用 post 請求,小數據傳輸 可以使用 get請求
get 請求使用 不安全,攜帶的數據容易被人截取,所以 一般都使用 post請求

Ⅹ javaEE 如何將ID post上傳

用httpclient這個jar包

/**
*連接超時
*/
_TIME_OUT=1000*30;


/**
*響應超時
*/
publicstaticfinalintSO_TIMEOUT=1000*30;

/**
*發一起個Post請求,簡單的Text方式
*@paramurl 請求URL
*@paramparameters 請求參數
*@paramencoding 字元編碼
*@return
*@throwsException
*/
publicstaticStringpost(Stringurl,List<NameValuePair>parameters,Stringencoding)throwsException{
BasicHttpParamshttpParameters=newBasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters,CONNECTION_TIME_OUT);
HttpConnectionParams.setSoTimeout(httpParameters,SO_TIMEOUT);
HttpClienthttpClient=newDefaultHttpClient(httpParameters);

HttpPostpost=newHttpPost(url);
HttpResponseresponse;
try{
UrlEncodedFormEntityencode=newUrlEncodedFormEntity(parameters,encoding);
post.setEntity(encode);
response=httpClient.execute(post);
returnEntityUtils.toString(response.getEntity());
}catch(Exceptione){
throwe;
}
}



熱點內容
學編程不想學了 發布:2025-01-25 03:36:51 瀏覽:379
如何壓縮0 發布:2025-01-25 03:36:49 瀏覽:794
伺服器主板和家用電腦主板的區別 發布:2025-01-25 03:36:47 瀏覽:893
查詢資料庫連接數 發布:2025-01-25 03:36:41 瀏覽:976
安卓鎖屏切換在哪裡 發布:2025-01-25 03:30:56 瀏覽:220
aspx代碼加密 發布:2025-01-25 03:28:09 瀏覽:925
安卓手機如何打開mdx 發布:2025-01-25 03:20:31 瀏覽:604
電腦易學編程 發布:2025-01-25 03:19:42 瀏覽:678
蘋果手機怎麼通過藍牙傳視頻給安卓手機 發布:2025-01-25 03:17:04 瀏覽:652
ie不使用緩存 發布:2025-01-25 03:15:28 瀏覽:846