Обработка HTTP Get/ Delete Android с помощью REST
Я реализую HTTP-сервер на основе REST в Android. Сервер отвечает на запросы GET, DELETE и POST. Два Android-устройства обмениваются данными с помощью HTTP Post (я использую службу, где устройство продолжает прослушивать порт и отправляет сообщение на следующее устройство, и это продолжается).
Я тестирую ПОЛУЧЕНИЕ и УДАЛЕНИЕ, используя Mozilla Poster. Должен ли я добавить отдельный сокет / порт для обработки того же? Потому что, когда я пытаюсь сейчас, иногда я получаю ошибку тайм-аута или ответ не найден. Тем не менее, я могу видеть ответ сервера в окне Logcat. Пожалуйста, помогите мне. Код для обработки запроса GET:
if(method.equals("GET"))
{
if(checkFileExisting())
{
BufferedReader reader = new BufferedReader(new FileReader(new File(getFilesDir()+File.separator+"script.json")));
String read;
StringBuilder builder = new StringBuilder("");
while((read = reader.readLine()) != null)
{
builder.append(read);
}
String JSONContents = builder.toString();
reader.close();
JSONObject jsonObject;
try {
jsonObject = new JSONObject(JSONContents);
String name = jsonObject.getString("name");
JSONObject stateObject = jsonObject.getJSONObject("state");
String stateValue = stateObject.getString("value");
if(name.equals(target))
{
HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
response.setEntity(new StringEntity("State is:" + stateValue));
conn.sendResponseHeader(response);
conn.sendResponseEntity(response);
}
else
{
HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 404, "Not Found");
response.setEntity(new StringEntity("The requested resource " + target + " could not be found due to mismatch!!"));
conn.sendResponseHeader(response);
conn.sendResponseEntity(response);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
else
{
HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 404, "Not Found");
response.setEntity(new StringEntity("The requested resource " + target + " could not be found!!"));
conn.sendResponseHeader(response);
conn.sendResponseEntity(response);
}
}
1 ответ
Ссылка http://www.integratingstuff.com/2011/10/24/adding-a-webserver-to-an-android-app/ содержит очень хороший пример. Я пропустил conn.close() в моем коде.