post提交返回json格式

主要代码如下:

package src.seagm;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.Toast;

public class LoginActivity extends Activity {
private EditText usernameText;
private EditText passwordText;
private CheckBox persistentBox;
private Button loginButton;

//设置是否保持登录
private boolean persistent = true;//初始化保持登录

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initWidget();//初始化组件

//监听保持登录的checkbox
persistentBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if( isChecked ){//保持登录
persistent = true;
}else{
persistent = false;
}
}
});

//点击登录
loginButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
String username = usernameText.getText().toString().trim();
String password = passwordText.getText().toString().trim();

//开始以post方式提交数据
//String strUrl = "http://www.seagm.cn/r=login/do";
String strUrl = "http://192.168.0.105/interface.php";
HttpPost httpRequest = new HttpPost(strUrl);

//提交的参数以键值对的形式提交
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));
params.add(new BasicNameValuePair("persistent", String.valueOf(persistent)));

try {
//发送请求
httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));//字符编码
//创建接收响应的客户端对象
HttpClient httpClient = new DefaultHttpClient();
//接收响应
HttpResponse httpResponse = httpClient.execute(httpRequest);
if( httpResponse.getStatusLine().getStatusCode() == 200 ){//请求成功
//将返回响应的数据取出来并处理(返回的数据是json格式)
InputStream inputStream = httpResponse.getEntity().getContent();
StringBuilder builder = new StringBuilder();
//读取数据流
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while( (line = bufferedReader.readLine()) != null ){
builder.append(line);
}

JSONObject jsonObject = new JSONObject(builder.toString());
int returnCode = Integer.parseInt(jsonObject.getString("code"));
if(returnCode == 1){//登录成功
System.out.print(jsonObject);
}else{
Toast.makeText(LoginActivity.this, "登录失败", Toast.LENGTH_LONG).show();
}
}else{
Toast.makeText(LoginActivity.this, "Error Response: " + httpResponse.getStatusLine().toString(), Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
Toast.makeText(LoginActivity.this, e.getMessage().toString(), Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
});
}

private void initWidget(){
usernameText = (EditText) this.findViewById(R.id.username);
passwordText = (EditText) this.findViewById(R.id.password);
persistentBox = (CheckBox) this.findViewById(R.id.presistent);
loginButton = (Button) this.findViewById(R.id.login);
}
}

posted @ 2012-04-10 12:14  幻星宇  阅读(2245)  评论(0编辑  收藏  举报