- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLEncoder;
- import java.util.Map;
- import org.apache.http.protocol.HTTP;
- import com.everyone.android.callback.ParseCallback;
- import com.everyone.android.callback.ResultCallback;
- /**
- * 功能描述:通过HTTP协议发送POST请求
- * @author android_ls
- *
- */
- public class AsyncHttpPost extends AsyncBaseRequest {
- /**
- *
- */
- private static final long serialVersionUID = 3L;
- public AsyncHttpPost(String url, Map<String, String> parameter,
- ParseCallback handler, ResultCallback requestCallback) {
- super(url, parameter, handler, requestCallback);
- }
- @Override
- protected InputStream getRequestResult() throws IOException {
- StringBuilder sb = new StringBuilder();
- if(parameter!=null && !parameter.isEmpty()){
- for(Map.Entry<String, String> entry : parameter.entrySet()){
- sb.append(entry.getKey()).append('=')
- .append(URLEncoder.encode(entry.getValue(), HTTP.UTF_8)).append('&');
- }
- sb.deleteCharAt(sb.length()-1);
- }
- // 得到实体的二进制数据
- byte[] entitydata = sb.toString().getBytes();
- URL url = new URL(requestUrl);
- mHttpURLConn = (HttpURLConnection)url.openConnection();
- mHttpURLConn.setRequestMethod("POST");
- mHttpURLConn.setConnectTimeout(5 * 1000);
- // 如果通过post提交数据,必须设置允许对外输出数据
- mHttpURLConn.setDoOutput(true);
- mHttpURLConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
- mHttpURLConn.setRequestProperty("Content-Length", String.valueOf(entitydata.length));
- OutputStream outStream = mHttpURLConn.getOutputStream();
- outStream.write(entitydata);
- outStream.flush();
- outStream.close();
- if(mHttpURLConn.getResponseCode()== HttpURLConnection.HTTP_OK){
- return mHttpURLConn.getInputStream();
- }
- return null;
- }
- }
来源: http://www.phpxs.com/code/1002170/