android 向服务器提交数据(get-post-AsyncHttpClient)
2017-02-20 21:30
741 查看
在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持。
在HTTP通信中使用最多的就是GET和POST了,GET请求可以获取静态页面,也可以把参数放在URL字符串的后面,传递给服务器。POST与GET的不同之处在于POST的参数不是放在URL字符串里面,而是放在HTTP请求数据中。
清单文件里面要加入网络权限
下面代码实例:
xm代码:
服务端准备:
在HTTP通信中使用最多的就是GET和POST了,GET请求可以获取静态页面,也可以把参数放在URL字符串的后面,传递给服务器。POST与GET的不同之处在于POST的参数不是放在URL字符串里面,而是放在HTTP请求数据中。
清单文件里面要加入网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
下面代码实例:
public class MainActivity extends AppCompatActivity { private EditText et_main_uname; private EditText et_main_upass; private URL url; private HttpURLConnection httpURLConnection; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_main_uname = (EditText) findViewById(R.id.et_main_uname); et_main_upass = (EditText) findViewById(R.id.et_main_upass); } //使用get提交 public void loginGET(View view){ String uname=et_main_uname.getText().toString(); String upass=et_main_upass.getText().toString(); new MyTask().execute(uname,upass,"GET"); } //使用post提交 public void loginPOST(View view){ String uname=et_main_uname.getText().toString(); String upass=et_main_upass.getText().toString(); new MyTask().execute(uname,upass,"POST"); } //使用第三方AsyncHttpClient提交 //HttpClient导致不可以问题,在Gradle android{}里面加入一个内库useLibrary 'org.apache.http.legacy'(复制进去即可) public void loginAsyncHttpClient(View view){ String uname=et_main_uname.getText().toString(); String upass=et_main_upass.getText().toString(); AsyncHttpClient asyncHttpClient=new AsyncHttpClient(); RequestParams requestParames=new RequestParams(); requestParames.put("uname",uname); requestParames.put("upass",upass); asyncHttpClient.post("http://192.168.10.101:8080/androidData/doIndex.do",requestParames,new TextHttpResponseHandler(){ @Override public void onSuccess(int statusCode, org.apache.http.Header[] headers, String responseBody) { super.onSuccess(statusCode, headers, responseBody); Toast.makeText(MainActivity.this, ""+responseBody, Toast.LENGTH_SHORT).show(); } @Override public void onFailure(int statusCode, org.apache.http.Header[] headers, String responseBody, Throwable error) { super.onFailure(statusCode, headers, responseBody, error); } }); } class MyTask extends AsyncTask{ @Override protected Object doInBackground(Object[] objects) { String uname=objects[0].toString(); String upass=objects[1].toString(); String type=objects[2].toString(); try { if ("GET".equals(type)){ //用Get方式请求 url = new URL("http://192.168.10.101:8080/androidData/doIndex.do?uname="+uname+"&upass="+upass); Log.i("test","GET方式"); }else if("POST".equals(type)){ url=new URL("http://192.168.10.101:8080/androidData/doIndex.do"); Log.i("test","POST方式"); } httpURLConnection = (HttpURLConnection)url.openConnection(); httpURLConnection.setRequestMethod(type); httpURLConnection.setConnectTimeout(5000); if ("POST".equals(type)){ //设置可以允许对外输出数据 httpURLConnection.setDoOutput(true); String str="uname="+uname+"&upass="+upass; //添加请求头 //Content-Length: httpURLConnection.setRequestProperty("Content-Length",""+str.length()); //Content-Type:application/x-www-form-urlencoded httpURLConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); //将内容提交到服务器 httpURLConnection.getOutputStream().write(str.getBytes()); } if (httpURLConnection.getResponseCode()==200){ InputStream inputStream=httpURLConnection.getInputStream(); BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream)); String str=bufferedReader.readLine(); return str; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } //更新UI @Override protected void onPostExecute(Object o) { super.onPostExecute(o); String s= (String) o; if ("success".equals(s.trim())){ Toast.makeText(MainActivity.this, "登录成功,正在跳转", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(MainActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show(); } } } }
xm代码:
<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="ghq.zking.com.ghq_android_31.MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/et_main_uname" android:hint="请输入用户名:" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/et_main_upass" android:hint="请输入密码:" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录(GET)" android:onClick="loginGET" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录(POST)" android:onClick="loginPOST" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录(AsyncHttpClient)" android:onClick="loginAsyncHttpClient" /> </LinearLayout>
服务端准备:
public class SendDataServlet implements Servlet{ public void destroy() { // TODO Auto-generated method stub } public ServletConfig getServletConfig() { // TODO Auto-generated method stub return null; } public String getServletInfo() { // TODO Auto-generated method stub return null; } public void init(ServletConfig arg0) throws ServletException { // TODO Auto-generated method stub } public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String uname=request.getParameter("uname").trim(); String upass=request.getParameter("upass").trim(); String str=null; if("admin".equals(uname)&&"upass".equals(upass)){ str="success"; }else{ str="failure"; } System.out.println("用户名:"+uname+"密码:"+upass); request.setAttribute("result", str); request.getRequestDispatcher("result.jsp").forward(request, response); } }
相关文章推荐
- Android之向服务器提交数据(POST,GET,AsyncHttpClient)
- 32.Android端向web端(服务器)提交数据(GET-POST-AsyncHttpClient)
- Android 向服务器提交数据(GET-POST-AsyncHttpClient)
- Android 向服务器提交数据(GET-POST-AsyncHttpClient)
- Android-向服务器提交数据(GET-POST-AsyncHttpClient)
- Android网络数据之向服务器提交数据的三种方式(get+post+AsyncHttpClient)
- android之向服务器提交数据(GET,POST,AsyncHttpClient)
- 向服务器提交数据(GET-POST-AsyncHttpClient)
- Android -- 提交数据到服务器,Get Post方式, 异步Http框架提交
- Android -- 提交数据到服务器,Get Post方式, 异步Http框架提交
- android get或post及HttpClient与服务器数据交互
- Android - GET请求,POST请求,数据提交,编码,HttpClient,async-http开源框架,多线程下载,断点续传,xUtils框架
- Android-使用GET、POST、AsyncHttpClient向服务器提交数据
- Android HttpClient框架get和post方式提交数据(非原创)
- Android Get,Post,AsyncHttpClient向服务器提交数据几种方式
- 与服务器进行数据Android--->servlet(get、post、AsyncClient)三种方式
- Android Get,Post,AsyncHttpClient向服务器提交数据几种方式
- android(21)(使用HttpURLConnection,HttpClient和AsyncHttpClient分别实现post和get请求数据)
- Android AsyncHttpClient 异步HTTP POST提交JSON数据
- 我的Android进阶之旅------>Android发送GET和POST以及HttpClient发送POST请求给服务器响应