2016-02-04 60 views
1

我一直在試圖開發一個桌面Java應用程序,它可以將本地硬盤上的圖像上傳到我的網站,並獲取在PHP中爲該圖像動態創建的頁面的URL。我遇到了可以發送POST請求的HttpClient,但有很多不贊成使用的類,並且我還沒有看到除了HTTP狀態碼之外如何從服務器獲取一些信息。我不熟悉並且真想避免的第二種方法是在JAVA中重建服務器端。Java HTTP文件上傳和服務器響應

這將是通過上傳表單(這是在PHP中處理)上傳文件並獲取像JAVA應用程序的圖像的新URL的一些信息最簡單的解決方案?

+0

事實上,也沒有使用在服務器一側TECNOLOGY,所以你將交換字節事項。您可以在客戶端使用Retrofit輕鬆地將文件發送到服務器。 –

+0

它看起來像一個簡單的庫。是否有任何關於從服務器獲得響應的詳細文檔,如上傳圖片的URL等 – user2035457

回答

0

您可以閱讀POST請求的響應很容易(假設你已經上傳的文件,以在後的服務器 - 如果查不出來How to upload a file using Java HttpClient library working with PHP,但我複製這裏的關鍵線):

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpPost post = new HttpPost(url); 
File file = new File("c:/TRASH/zaba_1.jpg"); 
FileEntity reqEntity = new FileEntity(file, "binary/octet-stream"); 
reqEntity.setContentType("binary/octet-stream"); 
post.setEntity(reqEntity); 
HttpResponse response = httpclient.execute(post); 
HttpEntity entity = response.getEntity(); 
Log.d("INFO", "rcode:" + response.getStatusLine().toString()); 
if (response.getStatusLine().getStatusCode() - 200 >= 100) 
    throw new Exception("bad status code: " + response.getStatusLine().getStatusCode()); 
String responseString = EntityUtils.toString(entity); 

哦,順便說一句,這是使用

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
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; 
+0

您能否詳細解釋一下dict中存儲的內容? – user2035457

+0

在你的情況下,你應該已經在POST上傳了一張圖片,所以所有的東西都到'HttpResponse response = httpclient.execute(post);'你應該已經擁有了。之後,您可以使用我的代碼讀取服務器發送的響應,以解析返回的網址。 – Aaron

+0

我添加了一些與上傳文件和鏈接相關的代碼 – Aaron