Android 向服务器提交数据(GET-POST-AsyncHttpClient)
一个登录的小 demo: 先在清单文件下配置权限
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.dzz.android31_commitdatatoserver"> <!--网络权限--> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/APPTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>写下布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.dzz.android31_commitdatatoserver.MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:text="admin" android:id="@+id/tv_main_name" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:text="123456" android:id="@+id/tv_main_pass" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录(GET)" android:onClick="loginByGet" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录(POST)" android:onClick="loginByPost" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录(AcyncHttpClient)" android:onClick="loginByAcyncHttpClient" /></LinearLayout>在MainActivity里编写提交
package com.dzz.android31_commitdatatoserver;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.EditText;import android.widget.Toast;import com.loopj.android.http.AsyncHttpClient;import com.loopj.android.http.RequestParams;import com.loopj.android.http.TextHttPResponseHandler;import org.apache.http.Header;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class MainActivity extends AppCompatActivity { private EditText tv_main_name; private EditText tv_main_pass; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_main_name = (EditText) findViewById(R.id.tv_main_name); tv_main_pass = (EditText) findViewById(R.id.tv_main_pass); } public void loginByGet(View view){ String uname=tv_main_name.getText().toString(); String upass=tv_main_pass.getText().toString(); String path=getString(R.string.login)+"/front/loginAction.xhtml"; //可变数组 new MyTask().execute(uname, upass, path, "GET"); Log.i("test",uname+"==get=="+upass); } public void loginByPost(View view){ String uname=tv_main_name.getText().toString(); String upass=tv_main_pass.getText().toString(); String path=getString(R.string.login)+"/front/loginAction.xhtml"; //可变数组 new MyTask().execute(uname, upass, path, "POST"); Log.i("test",uname+"==post=="+upass); } public void loginByAcyncHttpClient(View view){ String uname=tv_main_name.getText().toString(); String upass=tv_main_pass.getText().toString(); String path=getString(R.string.login)+"/front/loginAction.xhtml"; AsyncHttpClient asyncHttpClient=new AsyncHttpClient(); RequestParams requestParams=new RequestParams(); requestParams.put("uname",uname); requestParams.put("upass",upass); // 用post提交 路径 参数 响应 asyncHttpClient.post(path,requestParams,new TextHttpResponseHandler(){ @Override //成功 public void onSuccess(int statusCode, Header[] headers, String responseBody) { super.onSuccess(statusCode, headers, responseBody); //会自动把值封装好 Toast.makeText(MainActivity.this, "=="+responseBody, Toast.LENGTH_SHORT).show(); } @Override //失败 public void onFailure(int statusCode, Header[] headers, String responseBody, Throwable error) { super.onFailure(statusCode, headers, responseBody, error); } }); } class MyTask extends AsyncTask{ private HttpURLConnection connection; private URL url; @Override protected Object doInBackground(Object[] objects) { //获取参数的值 String uname = objects[0].toString(); String upass = objects[1].toString(); String path = objects[2].toString(); String type = objects[3].toString(); String str="uname="+uname+"&upass="+upass; try { if ("GET".equals(type)){ //用GET方式提交 path=path+"?"+str; url = new URL(path); connection= (HttpURLConnection) url.openConnection(); connection.setRequestMethod(type); } else if ("POST".equals(type)){ //用POST方式提交 url = new URL(path); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(type); //设置contentType contentLength connection.setRequestProperty("Content-Length",str.length()+""); connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); //设置允许对外输出数据 connection.setDoOutput(true); //将用户名和密码提交到服务器 connection.getOutputStream().write(str.getBytes()); } connection.setConnectTimeout(5000); if(connection.getResponseCode()==200){ InputStream is= connection.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); String reault=br.readLine(); return reault; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); String s= (String) o; Toast.makeText(MainActivity.this, "==="+s, Toast.LENGTH_SHORT).show(); } }}服务器的代码在云盘下面是网址 网址:http://pan.baidu.com/s/1dENlLXf
以下是效果图: 登录成功 
登录失败 
新闻热点
疑难解答