Я создал сервер CoreNLP и могу получить к нему доступ с помощью команды wget:
wget --post-data 'It is a nice day, isn't it?' 'http://192.168.1.30:9000/?properties={"annotators": "openie", "outputFormat": "json"}' -O res.txt
Wget сохраняет результаты в файл res.txt.
Я бы хотел сделать то же самое, используя Java.
Я пытаюсь использовать HttpUrlConnection в режиме POST, но он возвращает мне FileNotFoundException.
Мой код:
class JSON {
static String encode(HashMap<String, String> hm) {
StringBuilder sb = new StringBuilder("?");
try {
for (Map.Entry<String, String> entry : hm.entrySet()) {
String par = URLEncoder.encode(entry.getKey(), "utf-8");
String val = URLEncoder.encode(entry.getValue(), "utf-8");
String link = par + "=" + val;
sb.append(link + "&");
}
} catch (Exception e) { e.printStackTrace(); }
return sb.toString();
}
static String POST(String s_url, HashMap<String, String> params) {
StringBuilder sb = new StringBuilder();
String s_url_params = encode(params).replaceFirst("\\?", "");
try {
URL url = new URL(s_url);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//Request header
connection.setRequestMethod("POST");
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
//Send post request
connection.setDoOutput(true);
DataOutputStream dos = new DataOutputStream(connection.getOutputStream());
dos.writeBytes(s_url_params);
dos.flush(); dos.close();
Log.i("JSONGet", "Sending 'POST' request to '" + s_url+"'");
//Response - input
BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line=bf.readLine())!=null) {
sb.append(line);
}
bf.close();
Log.i("JSONGet", "Done.");
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
HashMap<String, String> params = new HashMap<>();
params.put("data", "It is a nice day, isn't it?");
String json = JSON.POST("http://192.168.1.30:9000/?properties={\"annotators\": \"openie\", \"outputFormat\": \"json\"}", params);
Log.e("Results", "Res: "+json);
}
Так что спасибо заранее!