![](/img/trans.png)
[英]Pass value from Angular 5 to Java REST API using http put, line 0:-1 no viable alternative at input '<EOF>
[英]Java REST api Send array using HTTP PUT method
我無法在 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<String,String> dataMap 包含要發送的項目的所有詳細信息。 不幸的是,我仍然無法發送項目詳細信息。 請求狀態為 200,響應也正常。
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": "我的個人參考","qty": "3","description": "我的描述"}]}
問題
似乎有效載荷的格式不正確並且被 REST 服務器跳過。
解決方案
該問題已使用 kong.unirest.Unirest 庫解決。
再見
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.