2016-04-11 51 views
0

我正在使用名爲json-server的虛擬休息API服務器。我寫了一個能夠向服務器發送POS請求的android應用程序,服務器也返回了預期的201。使用Android HTTP客戶端將文件上載到REST api服務器

我對REST api不是很熟悉。我想從我的設備

 public void run() { 
        Logger.d("reponse","inside thread"); 

        HttpClient client = new DefaultHttpClient(TunnelView.this); 
        String url = "http://some_server:3000/comments"; 
        HttpGet get = new HttpGet(url); 
        HttpPost post = new HttpPost(url); 
        HttpResponse response = null; 
        post.setEntity(new FileEntity(new File("/root/sdcard/Download/File.txt"),"application/octect-stream")); 
        try 
        { 
         response = client.execute(post); 
         String res = response.getEntity().getContent().toString(); 
         Logger.d("response", res); 




        } 
        catch (Exception e) 
        { 
         e.printStackTrace(); 
        } 
       } 
      } 

每次我做了後,一個新的ID是評論陣列下添加在位於其餘API服務器在我的JSON文件發送文件。

"comments": [ 
{ 
    "id": 1, 
    "body": "some comment", 
    "postId": 1 
}, 
{ 
    "id": 2 
},] 

我不知道如何改變我的Android代碼或REST API帖子的網址,所以我可以發送整個文本文件的內容和它被貼在服務器上的JSON文件。

+2

'localhost'? Android設備上的服務器是否也是? – greenapps

+0

除了'localhost'問題,如何知道服務器支持文件上傳? –

+0

它不是本地主機,更新了代碼。有人可以解釋downvote嗎?我在這裏同意作者的意見:https://medium.com/@johnslegers/the-decline-of-stack-overflow-7cb69faa575d#.cb8mr39l6 – nitinsh99

回答

4

嘗試了這一點

public static JSONObject postFile(String url,String filePath,int id){ 
    String result=""; 
    HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost(url); 
    File file = new File(filePath); 
    MultipartEntity mpEntity = new MultipartEntity(); 
    ContentBody cbFile = new FileBody(file, "image/jpeg"); 
    StringBody stringBody= null; 
    JSONObject responseObject=null; 
    try { 
     stringBody = new StringBody(id+""); 
     mpEntity.addPart("file", cbFile); 
     mpEntity.addPart("id",stringBody); 
     httpPost.setEntity(mpEntity); 
     System.out.println("executing request " + httpPost.getRequestLine()); 
     HttpResponse response = httpClient.execute(httpPost); 
     HttpEntity resEntity = response.getEntity(); 
     result=resEntity.toString(); 
     responseObject=new JSONObject(result); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return responseObject; 
} 

此代碼的工作完美,使用這個,如果你發現任何問題,做評論。

Happy coding!! 
+0

感謝Arpit,我調整了一下你的代碼,現在它能夠發送我的文件。 – nitinsh99

+0

感謝您接受,如果可以的話,請投票。 –

相關問題