首页 > 系统 > Android > 正文

Android网络通信的实现方式

2019-12-12 06:16:07
字体:
来源:转载
供稿:网友

Android网络编程分为两种:基于http协议的,和基于socket的。
基于Http协议:HttpClient、HttpURLConnection、AsyncHttpClient框架等
基于Socket
(1)针对TCP/IP的Socket、ServerSocket
(2)针对UDP/IP的DatagramSocket、DatagramPackage
(3)Apache Mina框架
一、HttpURLConnection的实现方式

String response = null; Url url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 新建连接实例 connection.setConnectTimeout(20000);// 设置连接超时时间,单位毫秒 //connection.setReadTimeout(20000);// 设置读取数据超时时间,单位毫秒 connection.setDoInput(true);// 是否打开输入流 true|false connection.setRequestMethod("POST");// 提交方法POST|GET //connection.setUseCaches(false);// 是否缓存true|false //connection.setRequestProperty("accept", "*/*"); //connection.setRequestProperty("Connection", "Keep-Alive"); //connection.setRequestProperty("Charset", "UTF-8"); //connection.setRequestProperty("Content-Length", String.valueOf(data.length)); //connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.connect();// 打开连接端口 int responseCode = conn.getResponseCode(); BufferedReader reader = null; if (responseCode == 200) {   reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));   StringBuffer buffer = new StringBuffer();   String line = "";   while ((line = reader.readLine()) != null) {     buffer.append(line);   }   response = buffer.toString(); } else {   response = "返回码:"+responseCode; } reader.close(); conn.disconnect(); 

二、HttpClient实现方式

HttpResponse mHttpResponse = null; HttpEntity mHttpEntity = null; //创建HttpPost对象 //HttpPost httppost = new HttpPost(path); //设置httpPost请求参数 //httppost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); HttpGet httpGet = new HttpGet(path);   HttpClient httpClient = new DefaultHttpClient(); InputStream inputStream = null; BufferedReader bufReader = null; String result = ""; // 发送请求并获得响应对象 mHttpResponse = httpClient.execute(httpGet);//如果是“POST”方式就传httppost  if (mHttpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {   // 获得响应的消息实体   mHttpEntity = mHttpResponse.getEntity();   // 获取一个输入流   inputStream = mHttpEntity.getContent();   bufReader = new BufferedReader(new InputStreamReader(inputStream));    String line = "";   while (null != (line = bufReader.readLine())) {     result += line;   }   //result = EntityUtils.toString(mHttpResponse.getEntity()); }  if (inputStream != null) {   inputStream.close(); } bufReader.close(); if (httpClient != null) {   httpClient.getConnectionManager().shutdown(); } 

三、实用AsyncHttpClient框架的实现方式

AsyncHttpClient client = new AsyncHttpClient();  client.get(url, new AsyncHttpResponseHandler() {    @Override    public void onSuccess(int i, Header[] headers, byte[] bytes) {            String response = new String(bytes, 0, bytes.length, "UTF-8");              }    @Override    public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {     }  });  

四、使用WebView视图组件显示网页

myWebView.getSettings().setJavaScriptEnabled(true);  myWebView.setWebViewClient(new WebViewClient() {    @Override    public boolean shouldOverrideUrlLoading(WebView view, String url) {      view.loadUrl(url);      return true;    }  });  myWebView.loadUrl("http://"+networkAddress);  

以上就是Android中网络通信几种方式的全部内容,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表