packagecom.example.jtuzi.myapplication;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.support.v7.app.AlertDialog;importjava.io.ByteArrayOutputStream;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.HttpURLConnection;importjava.net.URL;public class HttpPost extendsThread {private String connStr; //连接字符串

private String method; //方法名

private String data; //发送的数据

private Message response; //返回的数据

HttpPost11(String connStr, String method, String data, Message response) {this.connStr =connStr;this.method =method;this.data =data;this.response =response;

}public voidrun() {if (connStr == null || connStr.equals("") || data == null)return;try{byte b[] = data.getBytes("utf-8");

URL url;if (method != null)

url= new URL(connStr + "/" +method);elseurl= newURL(connStr);//设置参数

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

con.setConnectTimeout(5000);

con.setUseCaches(false);

con.setDoOutput(true);

con.setDoInput(true);

con.setRequestMethod("POST");//设置header

con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//写入数据

OutputStream os =con.getOutputStream();

os.write(b);

os.flush();

os.close();if (response == null)return;//处理返回的结果/** message.what是请求码,若请求码不是200,则返回

* 若请求码是200,请求成功,则封装数据。有方法名时数据key值为方法名,否则key值为"data"

* 若出现异常,则数据key值为"error",value为异常详细信息*/response.what=con.getResponseCode();if (response.what ==HttpURLConnection.HTTP_OK) {//向bos写入返回的数据

ByteArrayOutputStream bos = newByteArrayOutputStream();byte buffer[] = new byte[1024];

InputStream is=con.getInputStream();int count = -1;while ((count = is.read(buffer, 0, buffer.length)) != -1)

bos.write(buffer,0, count);

is.close();//封装数据

Bundle bd = newBundle();if (method != null)

bd.putString(method, bos.toString("utf-8"));elsebd.putString("data", bos.toString("utf-8"));

response.setData(bd);

}

con.disconnect();

System.out.println("准备输出结果");

response.sendToTarget();

Handler

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();//处理异常

if (response == null)return;

Bundle bd= newBundle();

bd.putString("error", e.getMessage());

response.setData(bd);

response.sendToTarget();

}

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐