您的位置:首页 > 移动开发 > Android开发

android post请求

2016-06-23 10:52 405 查看
参考文章:http://blog.csdn.net/lotusyangjun/article/details/22292445
http://blog.csdn.net/withiter/article/details/19908679
代码如下:

package tdrhedu.com.edugame;
import android.content.Intent;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* Created by zhaoliang on 2016/6/15.
*/
public class Login2Activity extends AppCompatActivity {
private static final String TAG = "Login2Activity";
Button mLogin = null;
TextView mForgetPassword = null;
TextView mJustSee = null;
EditText mAccountName, mAccountPasswd;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login2);

View v = findViewById(R.id.mLoginGuide);//找到你要设透明背景的layout 的id
v.getBackground().setAlpha(70);//0~255透明度值

//TextView tv = (TextView)findViewById(R.id.find_password);
//tv.setPaintFlags(tv.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

mLogin = (Button) findViewById(R.id.account_login);
mLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "click");

String postReceiverUrl = "http://112.126.64.235:9090/company/get";
Log.v(TAG, "postURL: " + postReceiverUrl);

new Thread(new Runnable(){
@Override
public void run() {
mAccountName = (EditText)findViewById(R.id.account_name);
mAccountPasswd = (EditText)findViewById(R.id.account_password);
String username = mAccountName.getText().toString();
String password = mAccountPasswd.getText().toString();
Map<String, String> params = new HashMap<String, String>();
params.put("username", username);
params.put("password", password);
String result = submitPostData(params, "utf-8");
Log.v(TAG, "result: " + result);
}
}).start();

//Intent i = new Intent(Login2Activity.this, PannelActivity.class);
//startActivity(i);

}
});

/*mForgetPassword = (TextView) findViewById(R.id.find_password);
mForgetPassword.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent i = new Intent(Login2Activity.this, ForgotActivity.class);
startActivity(i);
}
});

mJustSee = (TextView) findViewById(R.id.just_see);
mJustSee.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});*/

}

/*
* Function  :   发送Post请求到服务器
* Param     :   params请求体内容,encode编码格式
* Author    :   zhaoliang@deepai.com
*/
public static String submitPostData(Map<String, String> params, String encode) {

byte[] data = getRequestData(params, encode).toString().getBytes();//获得请求体
try {
URL url = new URL("http://112.126.64.235:9090/company/get");
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
httpURLConnection.setConnectTimeout(3000);  //设置连接超时时间
httpURLConnection.setDoInput(true);                  //打开输入流,以便从服务器获取数据
httpURLConnection.setDoOutput(true);                 //打开输出流,以便向服务器提交数据
httpURLConnection.setRequestMethod("POST");   //设置以Post方式提交数据
httpURLConnection.setUseCaches(false);        //使用Post方式不能使用缓存
//设置请求体的类型是文本类型
httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//设置请求体的长度
httpURLConnection.setRequestProperty("Content-Length", String.valueOf(data.length));
//获得输出流,向服务器写入数据
OutputStream outputStream = httpURLConnection.getOutputStream();
outputStream.write(data);

int response = httpURLConnection.getResponseCode();            //获得服务器的响应码
if(response == HttpURLConnection.HTTP_OK) {
InputStream inptStream = httpURLConnection.getInputStream();
return dealResponseResult(inptStream);                     //处理服务器的响应结果
}
} catch (IOException e) {
e.printStackTrace();
}
return "";
}

/*
* Function  :   封装请求体信息
* Param     :   params请求体内容,encode编码格式
* Author    :   zhaoliang@deepai.com
*/
public static StringBuffer getRequestData(Map<String, String> params, String encode) {
StringBuffer stringBuffer = new StringBuffer();        //存储封装好的请求体信息
try {
for(Map.Entry<String, String> entry : params.entrySet()) {
stringBuffer.append(entry.getKey())
.append("=")
.append(URLEncoder.encode(entry.getValue(), encode))
.append("&");
}
stringBuffer.deleteCharAt(stringBuffer.length() - 1);    //删除最后的一个"&"
} catch (Exception e) {
e.printStackTrace();
}
return stringBuffer;
}

/*
* Function  :   处理服务器的响应结果(将输入流转化成字符串)
* Param     :   inputStream服务器的响应输入流
* Author    :   zhaoliang@deepai.com
*/
public static String dealResponseResult(InputStream inputStream) {
String resultData = null;      //存储处理结果
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] data = new byte[1024];
int len = 0;
try {
while((len = inputStream.read(data)) != -1) {
byteArrayOutputStream.write(data, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
resultData = new String(byteArrayOutputStream.toByteArray());
return resultData;
}

}


完毕。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: