【问题标题】:HTTP POST request in JAVA with payload as a json fileJAVA 中的 HTTP POST 请求,负载为 json 文件
【发布时间】:2017-10-04 08:08:35
【问题描述】:

以下是我尝试发送的 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;
}

【问题讨论】:

  • 假设您使用new FileReader("test.json") 打开它,您的 test.json 应该位于运行java 命令的同一目录中
  • @Scadge ..my 文件确实在同一目录中。我也在问题中指定了这一点。
  • 您应该从所有 POST 上下文中抽象出您的问题。您的问题可能是无法找到您的文件。您是否看过这样的解决方案? stackoverflow.com/questions/6639/…
  • @FirstUser 你如何运行你的程序?请注意,不是 .java 和 test.json 文件应该在同一个文件夹中,但正如我所说,test.json 应该在您运行程序的文件夹中,即运行java 命令
  • @Scadge 我在 Eclipse 中运行程序。我应该将文件移动到某个特定目录吗?

标签: java json rest post


【解决方案1】:

使用类加载器获取jar中的资源

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

【讨论】:

    猜你喜欢
    • 2011-08-03
    • 2018-07-22
    • 2013-01-09
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多