2017-10-04 64 views
-1

以下是我試圖發送HTTP POST請求,將json文件作爲有效負載發送的請求。錯誤我總是得到的是JAVA中的HTTP POST請求,有效負載作爲json文件

java.io.FileNotFoundException:test.json(系統找不到指定的文件)

雖然test.json文件是在同一文件夾中。

private void sendPost() throws Exception {` 

    String url = "url"; 
    HttpClient httpClient = HttpClientBuilder.create().build(); 
    HttpPost post = new HttpPost(url); 

    List<NameValuePair> urlParameters = new ArrayList<NameValuePair>(); 

    String postData = AutomaticOnboarding.readFile("test.json"); 
    urlParameters.add(new BasicNameValuePair("data", postData)); 
    StringEntity se = new StringEntity(postData); 
    post.setHeader(HttpHeaders.CONTENT_TYPE, "application/json"); 

    post.setEntity(se); 

    HttpResponse response = httpClient.execute(post); 
    System.out.println("\nSending 'POST' request to URL : " + url); 
    System.out.println("Post parameters : " + post.getEntity()); 
    int responseCode = response.getStatusLine().getStatusCode(); 
    System.out.println("Response Code : " +responseCode); 
    if(responseCode == 200){ 
     BufferedReader rd = new BufferedReader(
         new InputStreamReader(response.getEntity().getContent())); 

     StringBuffer result = new StringBuffer(); 
     String line = ""; 
     while ((line = rd.readLine()) != null) { 
      result.append(line); 
     } 

     System.out.println(result.toString()); 
    } 
} 

這裏遵循READFILE方法:

public static String readFile(String filename) { 
    String result = ""; 
    try { 
     BufferedReader br = new BufferedReader(new FileReader(filename)); 
     StringBuilder sb = new StringBuilder(); 
     String line = br.readLine(); 
     while (line != null) { 
      sb.append(line); 
      line = br.readLine(); 
     } 
     result = sb.toString(); 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 
+1

你test.json應該是在同一個目錄下運行'資源java'命令假設你用'FileReader(「test.json」)打開它' – Scadge

+0

@Scadge ..my文件確實在同一個目錄下。我也在問題中指出了這一點。 –

+1

您應該從所有POST上下文中抽象出您的問題。您的問題可以恢復,您的文件無法找到。你看過這樣的解決方案嗎? https://stackoverflow.com/questions/6639/how-should-i-load-files-into-my-java-application –

回答

0

使用的類加載器來獲取罐內

getClass().getClassLoader().getResourceAsStream(filename)