Android学习笔记-基于HTTP的通信技术
基于Http的通信
packagecom.example.httpgetdemo;publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.button1).setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){newAsyncTask<String,Void,Void>(){@OverrideprotectedVoiddoInBackground(String...params){try{URLurl=newURL(params[0]);URLConnectionconnection=url.openConnection();InputStreaminputStream=connection.getInputStream();InputStreamReaderisr=newInputStreamReader(inputStream,"utf-8");BufferedReaderbr=newBufferedReader(isr);Stringline;while((line=br.readLine())!=null){System.out.println(line);}br.close();isr.close();inputStream.close();}catch(MalformedURLExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}returnnull;}}.execute("http://fanyi.youdao.com/openapi.do?keyfrom=httpgetdemo1&key=1659546208&type=data&doctype=json&version=1.1&q=good");}});}}
通过Get和Post方式请求
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"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"tools:context="com.example.httpgetdemo.MainActivity"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Username:"/><EditTextandroid:id="@+id/name"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="text"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="UserAge:"/><EditTextandroid:id="@+id/age"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="number"/><Buttonandroid:id="@+id/submit_get"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="SubmitusingGET"/><Buttonandroid:id="@+id/submit_post"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="SubmitusingPOST"/><TextViewandroid:id="@+id/result"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#0000FF"android:textSize="14sp"></TextView></LinearLayout>
MainActivity.java
packagecom.example.httpgetdemo;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.MalformedURLException;importjava.net.URL;importjava.net.URLConnection;importjava.util.ArrayList;importjava.util.List;importorg.apache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.NameValuePair;importorg.apache.http.client.HttpClient;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.http.message.BasicNameValuePair;importandroid.app.Activity;importandroid.os.AsyncTask;importandroid.os.Bundle;importandroid.os.Handler;importandroid.util.Log;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.TextView;publicclassMainActivityextendsActivity{privateStringTAG="http";privateStringbaseURL="http://192.168.24.250:8084/test_web/NewServlet";privateEditTextmNameText=null;privateEditTextmAgeText=null;privateHttpResponseresponse=null;privateButtongetButton=null;privateButtonpostButton=null;privateTextViewmResult=null;privateHandlerhandler=null;privateStringresult="";@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//创建属于主线程的handlerhandler=newHandler();mNameText=(EditText)findViewById(R.id.name);mAgeText=(EditText)findViewById(R.id.age);mResult=(TextView)findViewById(R.id.result);getButton=(Button)findViewById(R.id.submit_get);getButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){newAsyncTask<String,Void,Void>(){@OverrideprotectedVoiddoInBackground(String...params){System.out.println("mGetClickListener");Log.i(TAG,"GETrequest");//先获取用户名和年龄Stringname=mNameText.getText().toString();Stringage=mAgeText.getText().toString();//使用GET方法发送请求,需要把参数加在URL后面,用?连接,参数之间用&分隔Stringurl=baseURL+"?username="+name+"&age="+age;System.out.println(url);//生成请求对象HttpGethttpGet=newHttpGet(url);HttpClienthttpClient=newDefaultHttpClient();//发送请求try{//HttpResponseresponse=//httpClient.execute(httpGet);response=httpClient.execute(httpGet);//handler.post(runnableUi);System.out.println("response:"+response);showResponseResult(response);}catch(Exceptione){e.printStackTrace();}returnnull;}}.execute("");}});postButton=(Button)findViewById(R.id.submit_post);postButton.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubnewAsyncTask<String,Void,Void>(){@OverrideprotectedVoiddoInBackground(String...params){//TODOAuto-generatedmethodstubSystem.out.println("mPostClickListener");Log.i(TAG,"POSTrequest");//先获取用户名和年龄Stringname=mNameText.getText().toString();Stringage=mAgeText.getText().toString();NameValuePairpair1=newBasicNameValuePair("username",name);NameValuePairpair2=newBasicNameValuePair("age",age);List<NameValuePair>pairList=newArrayList<NameValuePair>();pairList.add(pair1);pairList.add(pair2);try{HttpEntityrequestHttpEntity=newUrlEncodedFormEntity(pairList);//URL使用基本URL即可,其中不需要加参数HttpPosthttpPost=newHttpPost(baseURL);//将请求体内容加入请求中httpPost.setEntity(requestHttpEntity);//需要客户端对象来发送请求HttpClienthttpClient=newDefaultHttpClient();//发送请求//HttpResponseresponse=httpClient//.execute(httpPost);response=httpClient.execute(httpPost);showResponseResult(response);}catch(Exceptione){e.printStackTrace();}returnnull;}}.execute("");}});}/***显示响应结果到命令行和TextView**@paramresponse*/privatevoidshowResponseResult(HttpResponseresponse){System.out.println("response:"+response);if(null==response){return;}HttpEntityhttpEntity=response.getEntity();try{InputStreaminputStream=httpEntity.getContent();BufferedReaderreader=newBufferedReader(newInputStreamReader(inputStream));Stringline="";while(null!=(line=reader.readLine())){result+=line;}//System.out.println(result);//mResult.setText("ResponseContentfromserver:"+result);MainActivity.this.runOnUiThread(runnableUi);}catch(Exceptione){e.printStackTrace();}}//构建Runnable对象,在runnable中更新界面RunnablerunnableUi=newRunnable(){@Overridepublicvoidrun(){//更新界面mResult.setText("ResponseContentfromserver:"+result);result="";}};}
Server端代码
importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/****@authorAdministrator*/@WebServlet(urlPatterns={"/NewServlet"})publicclassNewServletextendsHttpServlet{protectedvoidproce***equest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=UTF-8");Stringusername=request.getParameter("username");Stringage=request.getParameter("age");response.setContentType("text/html");PrintWriterout=response.getWriter();out.println("<html><head><title>Welcome!</title></head>");out.println("<body>Welcomemydearfriend!<br>");out.println("Yournameis:"+username+"<br>");out.println("Andyourageis:"+age+"</body></html>");out.flush();out.close();}@OverrideprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{System.err.println("doGet");proce***equest(request,response);}@OverrideprotectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{System.err.println("doPost");proce***equest(request,response);}@OverridepublicStringgetServletInfo(){return"Shortdescription";}//</editor-fold>}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。