2016-11-05 8 views
0

Я новичок в программировании в сети Android, и я хочу опубликовать некоторые данные в формате Json от android на сервер и получить ответ обратно на Android-клиент, используя тот же HttpURLConnection, который использовался для сообщения данные.Опубликовать Json от клиента android к серверу и получить ответ

Вот мой почтовый индекс:

public void post() throws IOException { 

    URL url = createEndpointUrl(); 

    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

    conn.setRequestMethod(POST); 
    conn.setDoInput(true); 
    conn.setDoOutput(true); 

    String query = createQueryParameters(); 

    OutputStream os = conn.getOutputStream(); 
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 

    writer.write(query); 
    writer.flush(); 
    writer.close(); 

    // Here i want to get operation 
    // result (response) from server 
    . 
    . 
    . 
    // 
    os.close(); 

    conn.disconnect(); 
} 

ответ

2

Получить ответ:

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
String decodedString; 
StringBuilder stringBuilder = new StringBuilder(); 
while ((decodedString = in.readLine()) != null) { 
     stringBuilder.append(decodedString); 
} 
in.close(); 
/*YOUR RESPONSE */ 
String response = stringBuilder.toString(); 
+0

Мне просто интересно, клиент будет ждать получать ответ, если сервер выполняет тяжелые задания? – saber

+0

@saber Да, вам нужно показать какой-то прогресс. Для этого вы можете использовать AsyncTask. –

1

попытка ниже

public void post() throws IOException { 

URL url = createEndpointUrl(); 

HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

conn.setRequestMethod(POST); 
conn.setDoInput(true); 
conn.setDoOutput(true); 

String query = createQueryParameters(); 

OutputStream os = conn.getOutputStream(); 
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 

writer.write(query); 
writer.flush(); 
writer.close(); 

// Here i want to get operation 
// result (response) from server 
. 
. 
. 
// 
os.close(); 
try { 
int responseCode = conn.getResponseCode();// error code 
String response = ""; // response 
BufferedReader br = new BufferedReader(new   
InputStreamReader(conn.getInputStream())); 
       while ((line = br.readLine()) != null) { 
        response += line; 
       } 
br.close(); 
}catch(Exception e){ 
// handle error 
} 
conn.disconnect(); 
} 
+0

Спасибо за ваш ответ. Что делать, если сервер делает тяжелую работу? Что ж, в этой ситуации клиент ждет ответа сервера? – saber

+0

Установите максимальное время соединения и сервера. И эта задача в отдельном потоке или asynctask (метод doInBackground.). – Sush