Мне нужно интегрировать службы Kii MbaaS в одном из моих веб-приложений помимо мобильных приложений. Я использовал Android SDK и смог его подключить. Однако для веб-сайта, использующего Java-решение, у них нет SDK, и попросил меня выполнить эту операцию с помощью REST. Теперь я планировал использовать ApacheHttpClient из Servlet для подключения к службам REST. Формат REST из их документов приведен ниже. В ApacheHttpClient я знаю, что могу передавать заголовки (-H) как HttpGet.addHeader («content-type», «application/json»). Однако я не уверен, как передавать данные (-d). Может ли кто-нибудь помочь мне здесь, указав на какую-либо ссылку на учебник или какой-либо пример кода о том, как передавать данные в службу REST вместе с заголовками?REST вызов с использованием ApacheHttpClient с данными и заголовками
Синтаксис REST дается
ценам нижеcurl -v -X POST \
-H "content-type:application/json" \
-H "x-kii-appid:{APP_ID}" \
-H "x-kii-appkey:{APP_KEY}" \
"https://api.kii.com/api/oauth2/token" \
-d '{"username":"user_123456", "password":"123ABC"}'
Спасибо заранее.
------------------------- Редактировать -------------------- ------------------------------ вот пример кода Java, который я написал для подключения к библиотеке Apache HttpClient 4.3, но я сохраняю получить ошибку, как 400 ... может ли кто-нибудь посоветовать?
ошибка -
Исключение в потоке "основного" java.lang.RuntimeException: Ошибка: HTTP-код ошибки : 400 в com.app.test.RestClientTest.main (RestClientTest.java:49)
package com.app.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
public class RestClientTest {
/**
* @param args
*/
public static void main(String[] args) {
CloseableHttpClient httpClient = null;
HttpPost httpost = null;
CloseableHttpResponse response = null;
try {
httpClient = HttpClients.createDefault();
httpost = new HttpPost("https://api.kii.com/api/oauth2/token");
httpost.addHeader("content-type", "application/json");
httpost.addHeader("x-kii-appid", "xxxxx");
httpost.addHeader("x-kii-appkey", "xxxxxxxx");
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("username", "xxxxx"));
nvps.add(new BasicNameValuePair("password", "xxxxx"));
// StringEntity input = new
// StringEntity("{\"qty\":100,\"name\":\"iPad 4\"}");
// input.setContentType("application/json");
httpost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));
response = httpClient.execute(httpost);
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(response.getEntity().getContent())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try{
response.close();
httpClient.close();
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
}
Если вы можете использовать любые клиентские клиентские базы, это упростит вашу работу. вы могли бы заглянуть [Джерси-клиент] (https://jersey.java.net/documentation/latest/client.html#d0e2562) – Lifecube
Да, ваша оценка ... однако вы могли бы дать мне пример о том, как я могу передавать данные и заголовки как в конечную точку REST? – raj239