gssを使用してHashMapに変換しているPOST JSON文字列だけを受け取るspringbootプロジェクトがあります。私はPostmanをPOSTとしてテストし、本体をprops
として{'fistname': 'John', 'lastname' : 'Doe'}
のようなjson文字列で追加して、props = {'fistname': 'John', 'lastname' : 'Doe'}
に変換します。一方予想Java RESTクライアントを作成して春のブートREST APIを呼び出します
@RequestMapping(value = "/rest", method = RequestMethod.POST)
protected String parse(@RequestParam("props") String props) {
Gson gson = new Gson();
Map<String, String> params = new HashMap<String, String>();
params = gson.fromJson(props, Map.class);
// Rest of the process
}
としてその作業は、私がFailed :: HTTP error code : 400
を得る
protected void callREST() {
try {
String json = someClass.getDate() //retrieved from database which is stored as json structure
Map<String, String> props = gson.fromJson(json, Map.class);
URL url = new URL("http://localhost:9090/myApp/rest");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
System.out.println(props.toString());
wr.writeBytes(json.toString());
wr.flush();
wr.close();
if(conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
throw new RuntimeException("Failed :: HTTP error code : " + conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String output;
System.out.println("Output from Server ... \n");
while((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch(Exception e) {
//print stack trace
}
}
このAPIを呼び出す必要のJavaEEプロジェクトを、持っています。私は、その春の起動は、props
変数のデータを受信していないと思っています。 この呼び出しを成功させるために、プロップとデータを渡すためにクライアントコードに何を追加する必要がありますか?
注:9090
Springの 'RestTemplate'クラスを見てください。これは非常に便利です。 – Berger