2016-11-05 30 views
0

我是新来的android网络编程,我想发布一些JSON格式的数据从android到服务器,并获得回应给android客户端使用相同的HttpURLConnection用于发布数据。从Android客户端发布Json到服务器并获得回复

这里是我的邮编:

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

相关问题