2017-10-04 219 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)