日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android之网络编程之网络通信几种方式实例分享

發(fā)布時間:2023/12/4 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之网络编程之网络通信几种方式实例分享 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 這篇文章主要介紹了android 網(wǎng)絡(luò)編程之網(wǎng)絡(luò)通信幾種方式,有需要的朋友可以參考一下

? ? ? ? ? ? ? ? ? ? ? ? ? 現(xiàn)在總結(jié)了六種方式:

(1)針對TCP/IP的Socket、ServerSocket

(2)針對UDP的DatagramSocket、DatagramPackage。這里需要注意的是,考慮到Android設(shè)備通常是手持終端,IP都是隨著上網(wǎng)進行分配的。不是固定的。因此開發(fā)也是有一點與普通互聯(lián)網(wǎng)應(yīng)用有所差異的。

(3)針對直接URL的HttpURLConnection。

(4)Google集成了Apache HTTP客戶端,可使用HTTP進行網(wǎng)絡(luò)編程。

(5)使用WebService。Android可以通過開源包如jackson去支持Xmlrpc和Jsonrpc,另外也可以用Ksoap2去實現(xiàn)Webservice。

(6)直接使用WebView視圖組件顯示網(wǎng)頁。基于WebView 進行開發(fā),Google已經(jīng)提供了一個基于chrome-lite的Web瀏覽器,直接就可以進行上網(wǎng)瀏覽網(wǎng)頁。

一、socket與serverSocket

客戶端代碼

public class TestNetworkActivity extends Activity implements OnClickListener{private Button connectBtn;private Button sendBtn;private TextView showView;private EditText msgText;private Socket socket;private Handler handler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test_network_main);connectBtn = (Button) findViewById(R.id.test_network_main_btn_connect);sendBtn = (Button) findViewById(R.id.test_network_main_btn_send);showView = (TextView) findViewById(R.id.test_network_main_tv_show);msgText = (EditText) findViewById(R.id.test_network_main_et_msg);connectBtn.setOnClickListener(this);sendBtn.setOnClickListener(this);handler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);String data = msg.getData().getString("msg");showView.setText("來自服務(wù)器的消息:"+data);}};}@Overridepublic void onClick(View v) {//連接服務(wù)器if(v == connectBtn){connectServer();}//發(fā)送消息if(v == sendBtn){String msg = msgText.getText().toString();send(msg);}}/** *連接服務(wù)器的方法*/public void connectServer(){try {socket = new Socket("192.168.1.100",4000);System.out.println("連接服務(wù)器成功");recevie();} catch (Exception e) {System.out.println("連接服務(wù)器失敗"+e);e.printStackTrace();} }/***發(fā)送消息的方法*/public void send(String msg){try {PrintStream ps = new PrintStream(socket.getOutputStream());ps.println(msg);ps.flush();} catch (IOException e) {e.printStackTrace();}}/***讀取服務(wù)器傳回的方法*/public void recevie(){new Thread(){public void run(){while(true){try {InputStream is = socket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));String str = br.readLine();Message message = new Message();Bundle bundle = new Bundle();bundle.putString("msg", str);message.setData(bundle);handler.sendMessage(message);} catch (IOException e) {e.printStackTrace();}}}}.start();} }

二、RUL、URLConnection、httpURLConnection、ApacheHttp、WebView

public class TestURLActivity extends Activity implements OnClickListener {private Button connectBtn;private Button urlConnectionBtn;private Button httpUrlConnectionBtn;private Button httpClientBtn;private ImageView showImageView;private TextView showTextView;private WebView webView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test_url_main);connectBtn = (Button) findViewById(R.id.test_url_main_btn_connect);urlConnectionBtn = (Button) findViewById(R.id.test_url_main_btn_urlconnection);httpUrlConnectionBtn = (Button) findViewById(R.id.test_url_main_btn_httpurlconnection);httpClientBtn = (Button) findViewById(R.id.test_url_main_btn_httpclient);showImageView = (ImageView) findViewById(R.id.test_url_main_iv_show);showTextView = (TextView) findViewById(R.id.test_url_main_tv_show);webView = (WebView) findViewById(R.id.test_url_main_wv);connectBtn.setOnClickListener(this);urlConnectionBtn.setOnClickListener(this);httpUrlConnectionBtn.setOnClickListener(this);httpClientBtn.setOnClickListener(this);}@Overridepublic void onClick(View v) {// 直接使用URL對象進行連接if (v == connectBtn) {try {URL url = new URL("http://192.168.1.100:8080/myweb/image.jpg");InputStream is = url.openStream();Bitmap bitmap = BitmapFactory.decodeStream(is);showImageView.setImageBitmap(bitmap);} catch (Exception e) {e.printStackTrace();}}// 直接使用URLConnection對象進行連接 if (v == urlConnectionBtn) {try {URL url = new URL("http://192.168.1.100:8080/myweb/hello.jsp");URLConnection connection = url.openConnection();InputStream is = connection.getInputStream();byte[] bs = new byte[1024];int len = 0;StringBuffer sb = new StringBuffer();while ((len = is.read(bs)) != -1) {String str = new String(bs, 0, len);sb.append(str);}showTextView.setText(sb.toString());} catch (Exception e) {e.printStackTrace();}}// 直接使用HttpURLConnection對象進行連接if (v == httpUrlConnectionBtn) {try {URL url = new URL("http://192.168.1.100:8080/myweb/hello.jsp?username=abc");HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {String message = connection.getResponseMessage();showTextView.setText(message);}} catch (Exception e) {e.printStackTrace();}}// 使用ApacheHttp客戶端進行連接(重要方法)if (v == httpClientBtn) {try {HttpClient client = new DefaultHttpClient();// 如果是Get提交則創(chuàng)建HttpGet對象,否則創(chuàng)建HttpPost對象// HttpGet httpGet = new// HttpGet("http://192.168.1.100:8080/myweb/hello.jsp?username=abc&pwd=321");// post提交的方式HttpPost httpPost = new HttpPost("http://192.168.1.100:8080/myweb/hello.jsp");// 如果是Post提交可以將參數(shù)封裝到集合中傳遞List dataList = new ArrayList();dataList.add(new BasicNameValuePair("username", "aaaaa"));dataList.add(new BasicNameValuePair("pwd", "123"));// UrlEncodedFormEntity用于將集合轉(zhuǎn)換為Entity對象httpPost.setEntity(new UrlEncodedFormEntity(dataList));// 獲取相應(yīng)消息HttpResponse httpResponse = client.execute(httpPost);// 獲取消息內(nèi)容HttpEntity entity = httpResponse.getEntity();// 把消息對象直接轉(zhuǎn)換為字符串String content = EntityUtils.toString(entity);//showTextView.setText(content);//通過webview來解析網(wǎng)頁webView.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);//給點url來進行解析//webView.loadUrl(url);} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}} }

三、使用webService

public class LoginActivity extends Activity implements OnClickListener{private Button loginBtn;private static final String SERVICE_URL = "http://192.168.1.100:8080/loginservice/LoginServicePort";private static final String NAMESPACE = "http://service.lovo.com/";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.login_main);loginBtn = (Button) findViewById(R.id.login_main_btn_login);loginBtn.setOnClickListener(this);}@Overridepublic void onClick(View v) {if(v == loginBtn){//創(chuàng)建WebService的連接對象HttpTransportSE httpSE = new HttpTransportSE(SERVICE_URL);//通過SOAP1.1協(xié)議對象得到envelopSoapSerializationEnvelope envelop = new SoapSerializationEnvelope(SoapEnvelope.VER11);//根據(jù)命名空間和方法名來創(chuàng)建SOAP對象SoapObject soapObject = new SoapObject(NAMESPACE, "validate");//向調(diào)用方法傳遞參數(shù)soapObject.addProperty("arg0", "abc");soapObject.addProperty("arg1","123");//將SoapObject對象設(shè)置為SoapSerializationEnvelope對象的傳出SOAP消息envelop.bodyOut = soapObject;try {//開始調(diào)用遠程的方法httpSE.call(null, envelop);//得到遠程方法返回的SOAP對象SoapObject resultObj = (SoapObject) envelop.bodyIn;//根據(jù)名為return的鍵來獲取里面的值,這個值就是方法的返回值String returnStr = resultObj.getProperty("return").toString();Toast.makeText(this, "返回值:"+returnStr, Toast.LENGTH_LONG).show();} catch (IOException e) {e.printStackTrace();} catch (XmlPullParserException e) {e.printStackTrace();}}} }


總結(jié)

以上是生活随笔為你收集整理的Android之网络编程之网络通信几种方式实例分享的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。