Android通过http协议POST传输方式
Android通过http协议POST传输方式如下:
方式一:HttpPost(import org.apache.http.client.methods.HttpPost)
代码如下:
private Button button1,button2,button3;private TextView textView1;
button1.setOnClickListener(new Button.OnClickListener(){
@Override
publicvoidonClick(Viewarg0){
//TODOAuto-generatedmethodstub
//URLַ
//StringuriAPI="http://www.dubblogs.cc:8751/Android/Test/API/Post/index.php";
StringuriAPI="http://172.20.0.206:8082//TestServelt/login.do";
/*建立HTTPPost连线*/
HttpPosthttpRequest=newHttpPost(uriAPI);
//Post运作传送变数必须用NameValuePair[]阵列储存
//传参数服务端获取的方法为request.getParameter("name")
List<NameValuePair>params=newArrayList<NameValuePair>();
params.add(newBasicNameValuePair("name","thisispost"));
try{
//发出HTTPrequest
httpRequest.setEntity(newUrlEncodedFormEntity(params,HTTP.UTF_8));
//取得HTTPresponse
HttpResponsehttpResponse=newDefaultHttpClient().execute(httpRequest);
//若状态码为200ok
if(httpResponse.getStatusLine().getStatusCode()==200){
//取出回应字串
StringstrResult=EntityUtils.toString(httpResponse.getEntity());
textView1.setText(strResult);
}else{
textView1.setText("ErrorResponse"+httpResponse.getStatusLine().toString());
}
}catch(ClientProtocolExceptione){
textView1.setText(e.getMessage().toString());
e.printStackTrace();
}catch(UnsupportedEncodingExceptione){
textView1.setText(e.getMessage().toString());
e.printStackTrace();
}catch(IOExceptione){
textView1.setText(e.getMessage().toString());
e.printStackTrace();
}
}
});方式二:HttpURLConnection、URL(import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;)
private void httpUrlConnection(){
try{
StringpathUrl="http://172.20.0.206:8082/TestServelt/login.do";
//建立连接
URLurl=newURL(pathUrl);
HttpURLConnectionhttpConn=(HttpURLConnection)url.openConnection();
////设置连接属性
httpConn.setDoOutput(true);//使用URL连接进行输出
httpConn.setDoInput(true);//使用URL连接进行输入
httpConn.setUseCaches(false);//忽略缓存
httpConn.setRequestMethod("POST");//设置URL请求方法
StringrequestString="客服端要以以流方式发送到服务端的数据...";
//设置请求属性
//获得数据字节数据,请求数据流的编码,必须和下面服务器端处理请求流的编码一致
byte[]requestStringBytes=requestString.getBytes(ENCODING_UTF_8);
httpConn.setRequestProperty("Content-length",""+requestStringBytes.length);
httpConn.setRequestProperty("Content-Type","application/octet-stream");
httpConn.setRequestProperty("Connection","Keep-Alive");//维持长连接
httpConn.setRequestProperty("Charset","UTF-8");
//
Stringname=URLEncoder.encode("黄武艺","utf-8");
httpConn.setRequestProperty("NAME",name);
//建立输出流,并写入数据
OutputStreamoutputStream=httpConn.getOutputStream();
outputStream.write(requestStringBytes);
outputStream.close();
//获得响应状态
intresponseCode=httpConn.getResponseCode();
if(HttpURLConnection.HTTP_OK==responseCode){//连接成功
//当正确响应时处理数据
StringBuffersb=newStringBuffer();
StringreadLine;
BufferedReaderresponseReader;
//处理响应流,必须与服务器响应流输出的编码一致
responseReader=newBufferedReader(newInputStreamReader(httpConn.getInputStream(),ENCODING_UTF_8));
while((readLine=responseReader.readLine())!=null){
sb.append(readLine).append("\n");
}
responseReader.close();
tv.setText(sb.toString());
}
}catch(Exceptionex){
ex.printStackTrace();
}
}