【发布时间】: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 中运行程序。我应该将文件移动到某个特定目录吗?