笔者在开发二手市场APP后台时,需要通过安卓Post方法提交数据至服务器后服务器返回数据至客户端,这部分具体代码为:
public void sendGetHttpRequest(){
OkHttpClient client = new OkHttpClient();
String username = et_username.getText().toString().trim();
String userpassword = et_password.getText().toString().trim();
RequestBody requestBody = new FormBody.Builder()
.add( "username", username )
.add( "password", userpassword )
.build();
Request request = new Request.Builder()
.url( "http://......" )
.post( requestBody )
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(okhttp3.Call call,IOException e) {
Log.d(TAG,"获取数据失败"+e.toString());
}
@Override
public void onResponse(okhttp3.Call call,Response response) throws IOException {
if(response.isSuccessful()){ //回调的方法执行在子线程
Log.d(TAG,"获取数据成功");
Log.d("Test","response.code()=="+response.code());
final String str = response.body().string();
Log.d(TAG,"response.body().string()=="+str);
runOnUiThread(new Runnable() {
@Override
public void run() {
result.setText( str );
}
});
}
}
} );
}
上述代码中只涉及用户名(username)以及密码(password)
注:runOnUiThread()方法的作用是将当前线程切换到主线程。
Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持,在HTTP通信中使用较多的是get方法和post方法,get方法是从服务器上获取数据,post方法是向服务器传送数据。