从文件中获取Json以用于Java中的RESTful Post请求

从文件中获取Json以用于Java中的RESTful Post请求,java,json,rest,Java,Json,Rest,我见过几个例子,人们使用字符串作为Json。我想从一个包含json的文件中读取,并将其用作请求的主体。最有效的方法是什么 非常感谢你的帮助。我的最终解决方案是使用groovy控制台并读取.json文件,如下所示: @Grab(group='org.apache.httpcomponents', module='httpclient', version='4.2.3') @Grab(group='org.apache.httpcomponents', module='httpcore', vers

我见过几个例子,人们使用字符串作为Json。我想从一个包含json的文件中读取,并将其用作请求的主体。最有效的方法是什么

非常感谢你的帮助。我的最终解决方案是使用groovy控制台并读取.json文件,如下所示:

@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.2.3')
@Grab(group='org.apache.httpcomponents', module='httpcore', version='4.2.3')
@Grab(group='org.apache.commons', module='commons-io', version='1.3.2')
import org.apache.http.impl.client.DefaultHttpClient
import org.apache.http.client.methods.HttpPost
import org.apache.http.HttpResponse
import org.apache.http.HttpEntity
import org.apache.http.entity.StringEntity
import org.apache.http.util.EntityUtils
import org.apache.commons.io.IOUtils

String json = IOUtils.toString(new FileInputStream("C:\\MyHome\\example.json"));

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://api/location/send");
httpPost.addHeader("content-type", "application/json");
httpPost.setEntity(new StringEntity(json));
HttpResponse response2 = httpclient.execute(httpPost);

try {
    System.out.println(response2.getStatusLine());
    HttpEntity entity2 = response2.getEntity();
    // do something useful with the response body
    // and ensure it is fully consumed
    EntityUtils.consume(entity2);
} finally {
    httpPost.releaseConnection();
}
这对我来说是一个很好的快速理智检查,是一个很好的方法来快速原型化我正在尝试做的事情。再次感谢

您可以使用Apache。下面是一个小示例,您可以在Groovy附带的GroovyConsole中试用。我使用它是因为它是快速原型化东西的最简单方法,因为使用Grape自动加载库jar(这就是@Grab注释所做的)。另外,在GroovyConsole中,不需要创建项目。您也不需要使用Groovy,尽管我通常会这样做

请注意,下面的代码是一个取自的修改后的POST示例。另外,请注意,HttpComponents/HttpClient是一个较新的项目,它取代了Apache中较旧的HttpClient(如果您在Google上搜索并看到没有HttpComponents的HttpClient,只需清理一下)。我使用的主机(posttestserver.com)只是一个测试服务器,如果一切正常,它将接受Http请求并返回响应

@Grab(group='org.apache.httpcomponents',module='httpclient',version='4.2.3')
@Grab(group='org.apache.httpcomponents',module='httpcore',version='4.2.3')
导入org.apache.http.impl.client.DefaultHttpClient
导入org.apache.http.client.methods.HttpPost
导入org.apache.http.HttpResponse
导入org.apache.http.HttpEntity
导入org.apache.http.entity.StringEntity
导入org.apache.http.util.EntityUtils
字符串json=“{foo:123,bar:\'hello\'”;
DefaultHttpClient httpclient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(“http://posttestserver.com/post.php");
setEntity(新的StringEntity(json));
HttpResponse response2=httpclient.execute(httpPost);
试一试{
System.out.println(response2.getStatusLine());
HttpEntity entity2=response2.getEntity();
//对响应体执行一些有用的操作
//并确保它被完全消耗
EntityUtils.consume(entity2);
}最后{
httpPost.releaseConnection();
}

文件中的文本不是字符串吗?你所看到的使用字符串的人的例子其实没有什么不同。我所看到的例子中,有人将字符串直接粘贴到类中,并使用转义\“使其看起来像一段有效的json。我有一个文件,其中的字符串类似于{“key”:“value”}(尽管更大)。我只想从文件中提取并使用它。如果您可以使用第三方库,请查看。它简化了这些任务。一行代码-
String data=IOUtils.toString(new FileInputStream(“fileName”);
@Perception感谢您的帮助,将其合并到我的解决方案中