【发布时间】:2021-01-17 07:33:51
【问题描述】:
我无法在 Java 中实现 REST API
我有一个使用 PHP 的通用实现的工作示例。
如何使用 json 库和 HttpClient(HttpPut 请求)在 Java 中实现它?
这是 PHP 示例
//DATA TO UPDATE
$postData = array(
'item' => array(
'title' => 'My title',
'personal_reference' => 'My personal ref',
'qty' => 3,
'description' => 'My description'
)
);
//RESOURCE CALL WITH PUT METHOD
$url = 'https://rest.restserv.com/item/1234?token=MyPersonalToken';
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, http_build_query($postData) );
curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$xml_response = curl_exec($ch);
我的(不工作的)方法是这样的:
Map<String,String> dataMap = new HashMap<String,String>();
dataMap.put("title", "some text");
dataMap.put("personal_reference", "my ref");
dataMap.put("qty", "1");
dataMap.put("description", "some desciption text");
String url = "https://rest.restserv.com/item/1234?token=MyPersonalToken";
HttpPut putRequest = new HttpPut(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
for (Map.Entry<String, String> entry : dataMap.entrySet()) {
builder.addTextBody(entry.getKey(), entry.getValue());
}
putRequest.setEntity(builder.build());
response = httpClient.execute(putRequest);
谢谢和最好的问候。
更新
现在我正在尝试另一种方法。对象 Map
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPut putRequest = new HttpPut(url);
putRequest.addHeader("Content-Type", "application/json; charset=utf-8");
JSONArray itemDetails = new JSONArray();
itemDetails.put(dataMap);
JSONObject root = new JSONObject().put("item", itemDetails);
StringEntity entity = new StringEntity(root.toString(2), "UTF-8");
System.out.println("ROOT is:::: "+root.toString(2));
putRequest.setEntity(entity);
response = httpClient.execute(putRequest);
root.toString(2) 结果是:
{"item": [{"title": "我的标题","personal_reference": "我的个人 ref","qty": "3","description": "我的描述"}]}
【问题讨论】:
-
你好 LightmanX。请包含java代码生成的错误信息
-
我可以毫无错误地执行此代码,但服务器无法识别所有发送的值。换句话说,我无法通过 Java 传递 $postData 之类的对象。
标签: java php json rest httpclient