Mobile アプリとは別に、Web アプリケーションの 1 つに Kii MbaaS サービスを統合する必要があります。Android SDK を使用していて、接続できました。ただし、Java ソリューションを使用する Web サイトの場合、SDK がなく、REST を使用して操作を行うように依頼されました。今、サーブレットからApacheHttpClientを使用してRESTサービスに接続することを計画していました。ドキュメントの REST 形式を以下に示します。ApacheHttpClient では、ヘッダー (-H) を HttpGet.addHeader("content-type", "application/json") として渡すことができることを知っています。ただし、データを渡す方法がわかりません(-d)。ヘッダーとともにデータを REST サービスに渡す方法に関するチュートリアル リンクまたはサンプル コードを参照して、ここで誰か助けてもらえますか?
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"}'
前もって感謝します。
- - - - - - - - - - - - - 編集 - - - - - - - - - - - - -------------------------- これは、Apache HttpClient 4.3 ライブラリを使用して接続するために作成したサンプル Java コードですが、400 のエラーが発生し続けます。 .. 誰でもアドバイスできますか?
エラー -
スレッド「メイン」の例外 java.lang.RuntimeException: 失敗しました: HTTP エラー コード: com.app.test.RestClientTest.main(RestClientTest.java:49) で 400
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();
}
}
}
}