1. 程式人生 > >android如何利用基於Http 協議的WebService服務來獲取遠端資料庫資料

android如何利用基於Http 協議的WebService服務來獲取遠端資料庫資料

初學android,這個問題困擾了多天,在搜尋引擎及論壇各位高手的幫助下,現在終於給搞定了,在這裡分享給大家,希望對大家有所幫助!(其實本來是嘗試用SOAP協議的,試了n天,無果,無奈又只能回到http了!)先來看看伺服器端吧! 

首先新建一個ASP.NET Web服務應用程式,我這裡將其命名為ShopService,具體程式碼如下: 
C#程式碼  收藏程式碼
  1. using System;  
  2. using System.Collections;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Linq;  
  6. using
     System.Web;  
  7. using System.Web.Services;  
  8. using System.Web.Services.Protocols;  
  9. using System.Xml.Linq;  
  10. using BLL.Shop;  
  11. using System.Web.Script.Services;  
  12. namespace WebService  
  13. {  
  14.     /// <summary>  
  15.     /// ShopService 的摘要說明  
  16.     /// </summary>  
  17.     [WebService(Namespace = "http://具體的根據你的需要咯/"
    )]  
  18.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  19.     [ToolboxItem(false)]  
  20.     // 若要允許使用 ASP.NET AJAX 從指令碼中呼叫此 Web 服務,請取消對下行的註釋。  
  21.     [System.Web.Script.Services.ScriptService]  
  22.     public class ShopService : System.Web.Services.WebService  
  23.     {  
  24.         [WebMethod]  
  25.         //[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
      
  26.         public string getShopItems(string userId, int type)  
  27.         {  
  28.             Shop shop = new Shop();  
  29.             return shop.getShopItems(userId, type);  
  30.         }  
  31.     }  
  32. }  

然後再來看看android客戶端,我就直接上程式碼了 
Java程式碼  收藏程式碼
  1. package com.xxx;  
  2. import java.io.BufferedReader;  
  3. import java.io.InputStream;  
  4. import java.io.InputStreamReader;  
  5. import java.net.HttpURLConnection;  
  6. import java.net.URL;  
  7. import org.apache.http.HttpEntity;  
  8. import org.apache.http.HttpResponse;  
  9. import org.apache.http.client.methods.HttpPost;  
  10. import org.apache.http.entity.StringEntity;  
  11. import org.apache.http.impl.client.DefaultHttpClient;  
  12. import org.apache.http.params.BasicHttpParams;  
  13. import org.apache.http.params.HttpConnectionParams;  
  14. import org.apache.http.params.HttpParams;  
  15. import org.json.JSONObject;  
  16. import android.graphics.Bitmap;  
  17. import android.graphics.BitmapFactory;  
  18. public class WebserviceTookit {  
  19.     // private static final String TAG = "ShopItems";  
  20.     private static final String WEBSERVICE_IP = "http://10.0.2.2:14294";  
  21.     public static String getShopItems(String userId, int type) {  
  22.         try {  
  23.             // 呼叫帶引數的WebMethod  
  24.             final String SERVER_URL = WEBSERVICE_IP  
  25.                     + "/ShopService.asmx/getShopItems"// 帶引數的WebMethod  
  26.             HttpPost request = new HttpPost(SERVER_URL); // 根據內容來源地址建立一個Http請求  
  27.             request.addHeader("Content-Type""application/json; charset=utf-8");// 必須要新增該Http頭才能呼叫WebMethod時返回JSON資料  
  28.             JSONObject jsonParams = new JSONObject();  
  29.             jsonParams.put("userId", userId);// 傳參  
  30.             jsonParams.put("type", type);  
  31.             HttpEntity bodyEntity = new StringEntity(jsonParams.toString(),  
  32.                     "utf8");// 引數必須也得是JSON資料格式的字串才能傳遞到伺服器端,否則會出現"{'Message':'xxx是無效的JSON基元'}"的錯誤  
  33.             request.setEntity(bodyEntity);  
  34.             HttpParams httpParameters = new BasicHttpParams();  
  35.             // Set the timeout in milliseconds until a connection is  
  36.             // established.  
  37.             // The default value is zero, that means the timeout is not used.  
  38.             int timeoutConnection = 3 * 1000;  
  39.             HttpConnectionParams.setConnectionTimeout(httpParameters,  
  40.                     timeoutConnection);  
  41.             // Set the default socket timeout (SO_TIMEOUT)  
  42.             // in milliseconds which is the timeout for waiting for data.  
  43.             int timeoutSocket = 5 * 1000;  
  44.             HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);  
  45.             DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);  
  46.             HttpResponse httpResponse = httpClient.execute(request); // 傳送請求並獲取反饋  
  47.             // 解析返回的內容  
  48.             if (httpResponse.getStatusLine().getStatusCode() == 200// StatusCode為200表示與服務端連線成功  
  49.             {  
  50.                 StringBuilder builder = new StringBuilder();  
  51.                 BufferedReader bufferedReader2 = new BufferedReader(  
  52.                         new InputStreamReader(httpResponse.getEntity()  
  53.                                 .getContent()));  
  54.                 for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2.readLine()) {  
  55.                     builder.append(s);  
  56.                 }  
  57.                 String resultString = builder.toString();  
  58.                 resultString = JSONToolkit.removeEscape(resultString);  
  59.                 return resultString;  
  60.             }  
  61.         } catch (Exception e) {  
  62.             e.printStackTrace();  
  63.             return "";  
  64.         }  
  65.         return "";  
  66.     }  
  67. }  


執行時記得關閉防火牆或者新增例外埠~

相關推薦

android如何利用基於Http 協議WebService服務獲取遠端資料庫資料

初學android,這個問題困擾了多天,在搜尋引擎及論壇各位高手的幫助下,現在終於給搞定了,在這裡分享給大家,希望對大家有所幫助!(其實本來是嘗試用SOAP協議的,試了n天,無果,無奈又只能回到http了!)先來看看伺服器端吧! 首先新建一個ASP.NET Web服務應用程

Android基於Http協議的網路通訊的兩種方法Get和Post

廢話就不多說了直接上程式碼,很多的解釋就直接寫在程式碼中了! 第一種方法:Get方法: public class Get { private HttpResponse httpResponse = null; private HttpEntity httpEnti

基於HTTP協議的輕量級開源簡單隊列服務:HTTPSQS[轉]

海量數據 短信 最大 ima 站內搜索 功能 .html 調用 python HTTPSQS(HTTP Simple Queue Service)是一款基於 HTTP GET/POST 協議的輕量級開源簡單消息隊列服務,使用 Tokyo Cabinet 的 B+Tree K

Android與PHP互動:客戶端用HTTP協議服務端通訊

        為了實現Android客戶端和服務端的通訊,Android SDK為我們提供了Apache的HttpClient來方便我們使用各種HTTP服務。可以把HttpClient看成一個瀏覽器,通過它可以方便地發出GET請求和POST請求來獲得服務端響應。 下面我們

HTTPSQS:基於 HTTP協議的輕量級開源簡單訊息佇列服務

HTTPSQS(HTTP Simple Queue Service)是一款基於 HTTP GET/POST 協議的輕量級開源簡單訊息佇列服務,使用 Tokyo Cabinet 的 B+Tree Key/Value 資料庫來做資料的持久化儲存。   專案網址:http://code.google.co

構建基於CXF的WebService服務(2)-- 利用CXF提供的wsdl2java工具建立客戶端

1、環境配置 將CXF_HOME/bin加入到環境變數path中,如我的是D:\Java\Jar\apache-cxf-2.7.7\bin 開啟cmd輸入 wsdl2java -v 出現如下資訊表示配

基於Http協議Android網路程式設計

寫在前面的話:好一陣子沒寫部落格了,心裡有點慚愧。在這期間我主要做了兩件事:一、之前在研究Android的過程中比較吃力,主要是Java的一些基礎知識掌握得還不太好,於是近半個月惡補了一下Java基礎,我發現自己連多型!多型!多型!(重要的事說三遍)這個面向物件

Go36-47-基於HTTP協議的網絡服務(net/http

使用 沒有 turn 示例 cep cookie 解析 context 針對 基於HTTP協議的網絡服務 HTTP協議是基於TCP/IP協議棧的,並且是一個面向普通文本的協議。原則上,使用任何一個文本編輯器,都可以寫出一個完整的HTTP請求報文。只要搞清楚了請求報文的頭部(

Java中基於HTTP協議網絡編程

copy 統一 throws 網絡編程 設置 查詢 trac enc pac java中為我們的網絡支持提供了java.net包,能夠使我們以編程的方式來訪問Web服務功能,這篇博客,就跟大家分享一下。Java中的網絡編程的知識。主要是學習下該java.net包下的

Spring Security 集成 CAS(基於HTTP協議版本)

可能 key 1.3 remove gin repo produce writing monit Spring Security 集成 CAS(基於HTTP協議版本) 近段時間一直研究Spring Security 集成 CAS,網上資料相關資料也很多,不過大都是基於Htt

Windows下基於http的git服務器搭建-gitstack

amp 自帶 tin hover from 服務器搭建 started col cts 版權聲明:若無來源註明,Techie亮博客文章均為原創。 轉載請以鏈接形式標明本文標題和地址: 本文標題:Windows下基於http的git服務器搭建-gitstack 本文

基於HTTP 協議認證介紹與實現

idt 興趣 cati 生成 保護 進行 pos 響應 label 導言 一直對http 的頭認證有興趣,就是路由器的那種彈出對話框輸入賬號密碼怎麽實現一直不明白,最近,翻了一下http 協議,發現這是一個RFC 2617的實現,所以寫篇文章介紹一下吧. Http基本認證

基於HTTP協議的幾種實時數據獲取技術

net 時有 消息服務 成功 哪裏 實現 http請求 服務 結果 原文鏈接https://www.cnblogs.com/xrq730/p/9280404.html,作者博客園----五月的倉頡,轉載請註明出處,謝謝 HTTP協議 HTTP協議大家都很熟悉了,開

使用HTTP協議服務器傳參的方式及django中獲取參數的方式

type quest bsp sed 4.2 默認值 未命名 訪問表 url 使用HTTP協議向服務器傳參的四種方式 URL路徑攜帶參數,形如/weather/beijing/2018; 查詢字符串(query string),形如key1=value1&key2

基於HTTP協議的幾種實時資料獲取技術(轉)

轉載自五月的倉頡 HTTP協議 HTTP協議是建立在TCP協議上的應用層協議,協議的本質是請求----應答: 即對於HTTP協議來說,服務端給一次響應後整個請求就結束了,這是HTTP請求最大的特點,也是由於這個特點,HTTP請求無法做到的是服務端向客戶端主動推送資料。 但由於H

api介面對於客戶端的身份認證方式以及安全措施 基於http協議的api介面對於客戶端的身份認證方式以及安全措施

轉載 基於http協議的api介面對於客戶端的身份認證方式以及安全措施  由於http是無狀態的,所以正常情況下在瀏覽器瀏覽網頁,伺服器都是通過訪問者的cookie(cookie中儲存的jsessionid)來辨別客戶端的身份的,當客戶端進行登入伺服器也會將登入資訊存放在伺服器並與客戶端的coo

Nginx + Tomcat基於HTTP協議實現反代、動靜分離、負載均衡和session會話保持

1、演示環境: IP 作業系統 部署程式 192.168.1.143 CentOS 7.5 Nginx 192.168.1.144 CentOS 7.5 Tomcat

Apache + Tomcat基於HTTP協議實現反代、動靜分離、負載均衡和session會話保持

1、演示環境: IP 作業系統 部署程式 192.168.1.143 CentOS 7.6 Apache 192.168.1.144 CentOS 7.6 Tomcat

基於http協議的加密傳輸方案

轉載自:https://www.cnblogs.com/mq0036/p/8274975.html 最近公司需要通過公網與其它平臺完成介面對接,但是基於開發時間和其它因素的考慮,本次對接無法採用https協議實現。既然不能用https協議,那就退而求其次採用http協議吧! 那麼問題來了!在

基於HTTP協議的web伺服器專案

專案簡介: 基於 HTTP 協議實現一個多執行緒伺服器,客戶端通過瀏覽器傳送請求,伺服器接收並分析客戶端的請求方法和資源,從而執行相應的邏輯處理,最終將客戶請求的資源以 HTML 頁面的形式呈現,並能進行差錯處理。 專案思路: 首先實現兩個主機不同程序間的通訊,