亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iOS開發筆記基于wsdl2objc調用asp.netWebService

2019-11-14 19:19:45
字體:
來源:轉載
供稿:網友

1.準備

先下載待會要用到的工具 WSDL2ObjC-0.6.zip WSDL2ObjC-0.7-PRe1.zip

 

我用的是WSDL2ObjC-0.6.zip

1.1搭建asp.net WebService項目并且部署在IIS服務器上面

創建WebService服務項目后先在Web.config添加節點,設置WebService遠程調試訪問,否則會出現:

“測試窗體只能用于來自本地計算機的請求”

 

 

<webServices><protocols><add name="HttpSoap" /><add name="HttpPost" /><add name="HttpGet" /><add name="Documentation" /></protocols></webServices>
View Code

創建類庫添加Model實體類

 

public class CourseEntity{    private int courseID;    public int CourseID    {        get { return courseID; }        set { courseID = value; }    }    private int parentID;    public int ParentID    {        get { return parentID; }        set { parentID = value; }    }    private string courseName;    public string CourseName    {        get { return courseName; }        set { courseName = value; }    }    private string coursePPT;    public string CoursePPT    {        get { return coursePPT; }        set { coursePPT = value; }    }    private string courseVidio;    public string CourseVidio    {        get { return courseVidio; }        set { courseVidio = value; }    }    }
View Code

 

事先做好Model實體類的生成dll文件,直接添加引用至bin目錄下

在項目當中添加一個數據庫操作類DBOperation.cs

接下來我們打開Service.cs文件。

2.asp.net WebService返回xml Json格式數據

2.1返回Xml格式數據

service.cs代碼如下:

  [WebMethod(Description = "ProblemPaper")]    public List<ProblemPaperEntity> ProblemPaper(String prkid)    {        return dbOperation.ProblemPaper(prkid);    }
View Code

DBOperation.cs代碼如下:

/// <summary>    /// 題庫試卷目錄表 ProblemPaper    /// </summary>    /// <returns>PPID(編號)PRKID(上一級)PTID(類型編號)Name(名稱)ProblemNum(目錄數量))</returns>    public List<ProblemPaperEntity> ProblemPaper(String prkid)    {        List<ProblemPaperEntity> list = new List<ProblemPaperEntity>();        ProblemPaperEntity model = null;        try        {            string sql = "select PPID,PRKID,PTID,Name,ProblemNum,Row_Number() over(order by PPID ) as row_number from ProblemPaper where 1=1";            sql += "  and prkid in ( select * from getProblemResourseByID("+prkid+"))";            string s = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;            SqlConnection con = new SqlConnection(s);            con.Open();            SqlCommand cmd = new SqlCommand(sql, con);            SqlDataReader reader = cmd.ExecuteReader();            while (reader.Read())            {                model = new ProblemPaperEntity();                model.PPID = reader.GetInt32(0);                model.PRKID = reader.GetInt32(1);                model.PTID = reader.GetInt32(2);                model.Name = reader.GetString(3);                model.ProblemNum = reader.GetInt32(4);                              list.Add(model);            }            reader.Close();            cmd.Dispose();        }        catch (Exception)        {        }        return list;    }
View Code

 

從service.cs代碼中可以看到ProblemPaper方法前面 [WebMethod]指示web服務提供的方法

public方法能否被調用者訪問取決于這個方法是否是一個“WebMethod”,在編寫方法的時候注意

方法前面是否含有WebMethod

2.2返回Json格式數據

service.cs 代碼如下:

[WebMethod(Description = "JsonProblemPaper2")]      [ScriptMethod(ResponseFormat = ResponseFormat.Json)]      public string JsonProblemPaper2(String prkid)      {          return new javaScriptSerializer().Serialize(dbOperation.ProblemPaper(prkid));      }
View Code

DBOperation.cs代碼如下:

public List<string> JsonProblemPaper(String prkid)    {        List<String> list = new List<String>();               try        {            string sql = "select PPID,PRKID,PTID,Name,ProblemNum,Row_Number() over(order by PPID ) as row_number from ProblemPaper where 1=1";            sql += "  and prkid in ( select * from getProblemResourseByID(" + prkid + "))";            string s = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;            SqlConnection con = new SqlConnection(s);            con.Open();            SqlCommand cmd = new SqlCommand(sql, con);            SqlDataReader reader = cmd.ExecuteReader();            while (reader.Read())            {                list.Add(reader[0].ToString());                list.Add(reader[1].ToString());                list.Add(reader[2].ToString()) ;                list.Add(reader[3].ToString());                list.Add(reader[4].ToString());                          }            reader.Close();            cmd.Dispose();        }        catch (Exception)        {        }        return list;    }
View Code

 

返回Json格式,需要在方法前面同時聲明

[WebMethod(Description = "××××")]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

返回格式: return new JavascriptSerializer().Serialize(dbOperation.ProblemPaper(prkid));

接下來的方法編寫由自己擴展,編寫完WebService

 3.部署

環境windows Server2008 IIS 7.5  SqlServer2012

選擇應用程序池.Net v.2.0,切記,如在部署遇到問題可以查閱其他相關資料,在這里

就不多詳細

 4.IOS基于wsdl2objc調用asp.net WebService

4.1使用wsdl2objc工具

 在官網上下載有2個版本,我用的是WSDL2ObjC-0.6.zip,

部署完畢后,打開wsdl2objc

Parse WSDL后稍等15秒左右出現Finish!查看導入目錄

將生成的所有文件放置在wsdl2objc文件夾

嘗試編譯出現錯誤如下:

解決方法:這里有2個錯誤

1."libxml/tree.h" file not found

2.ARC開啟與禁止

第一個錯誤解決方法如下:

支持libxml2

TARGETS -> Build Settings -> Linking -> Other Linker Flags,設置“-lxml2”

TARGETS -> Build Settings -> Search Paths-> Header Search Paths,設置“/usr/include/libxml2”

 

TARGETS -> Build Settings -> Apple LLVM5.0-Language-Objective C> Objective-C Automatic Reference Counting,設置“No”

 第二個錯誤解決方法:

TARGETS -> Build Settings ->All 搜索"compiler"

Apple LLVM 5.0- Custom CompilerFlags OtherWaning Flags 設置"-Wall"

 

打開Xcode的自動轉換工具

錯誤解決后,項目就可以完整的運行了,在第一個錯誤當中我花的時間有些多,

如果你在做的過程當中遇到這個錯誤

請重新嘗試再做看上面二個錯誤的解決方法,在第二個錯誤記得一次性轉換ARC

在項目當中還會用到手動設置ARC

手動ARC設置方法如下:

1.在Compiler Flags一列加上-fno-objc-arc就表示禁止這個.m文件的ARC

2.在Compiler Flags一列加上-fobjc-arc就表示開啟這個.m文件的ARC

 

參考資料:http://blog.csdn.net/a283127993/article/details/11082179

            http://blog.csdn.net/q199109106q/article/details/8565403

 

 

5. IOS客戶端解析xml,json數據

接下來詳細說明如何解析xml,json,往往遇到問題我就花了就是整整一天時間來做

5.1 IOS客戶端解析xml無參數據

代碼如下:

 

-(void)getXml{  NSMutableArray *result;ServiceSoap12Bingding *binding =[Service ServiceSoap];Service_Course *request = [[Service_Course alloc] init];ServiceSoap12BindingResponse *response = [binding CourseUsingParameters:request];for(id mine in response.bodyParts){    if([mine isKindOfClass:[Service_CourseResponse class]]){    [request  release];    result = [mine CourseResult].CourseEntity;}for(Service_CourseEntity *t in result){    NSLog(@"ID:%d ParentID:%d CourseName:%@ CoursePPT:%@ CourseVidio:%@",[t.CourseID intvalue],[t.ParentID intvalue],t.CourseName,t.CoursePPT,t.CourseVidio);}}         }
View Code

5.2 IOS客戶端解析xml有參數數據

-(void)getXml2{  NSMutableArray *result;ServiceSoap12Bingding *binding =[Service ServiceSoap];Service_ProblemPaper *request = [[Service_ProblemPaper alloc] init];request.prkid=@"1";ServiceSoap12BindingResponse *response = [binding ProblemPaperUsingParameters:request];for(id mine in response.bodyParts){    if([mine isKindOfClass:[Service_ProblemPaperResponse class]]){    [request  release];    result = [mine ProblemPaperResult].ProblemPaperEntity;}for(Service_CourseEntity *t in result){    NSLog(@"PPID:%d],[t.PPID intvalue]);}}  
View Code

 

代碼如下:

5.3 IOS客戶端解析json有參數據

代碼如下:

 

-(void)getJson{  NSMutableArray *result; NSData*data;ServiceSoap12Bingding *binding =[Service ServiceSoap];Service_JsonProblemPaper2 *request = [[Service_JsonProblemPaper2 alloc] init];request.prkid=@"1";ServiceSoap12BindingResponse *response = [binding JsonProblemPaper2UsingParameters:request];for(id mine in response.bodyParts){    if([mine isKindOfClass:[Service_JsonProblemPaper2Response class]]){    [request  release];    result = [mine JsonProblemPaper2Result] ;    data= [result dataUsingEncoding:NSUTF8StringEncoding];    NSLog(@"data:%@",data);     NSDictionary *dict =[NSjSONSerialization JSONbjectWithData:data  options:NSJSONReadingAllowFragmentS error:nil];if(dict == nil){  return ;}else{     for(NSString *ds in dict)     {        NSLog(@"json%@",[ds objectForKey:@"Name"]);    }}}} 
View Code

 

在這里我只對解析json有參數據說明,在這里我遇到不少問題,花的時間挺多的,

IOS客戶端解析xml有參數數據,IOS客戶端解析xml有參數數據

參考代碼就可以實現,在解析json有參數據,遇到了幾個問題,

就幾行代碼也花了好久,斷斷續續抽出時間做,最后才完成,下面是如何將NSString

最后完整的放入NSDictionary,并且取出相應的鍵值,result是返回類型的數據

將NSString轉化為NSData

[result dataUsingEncoding:NSUTF8StringEncoding];

將result類型的數據,轉成UTF8的數據

首先我們將result類型的數據,轉成UTF8的數據

 

將JSON串轉化為字典

蘋果引入了一個解析JSON串的NSJSONSerialization類。
通過該類,我們可以完成JSON數據與NSDictionary和NSArray之間的轉化

開始的時候想將返回的NSString數據轉化為NSDictionary即NSString-NSDictionary返回的數據為null

所以采用NSString-NSData-NSDictionary最后成功解決數據為null問題,數據成功拿到Name屬性值和其他屬性值

在這里我只打印Name屬性值

6.總結

  該博文面向初學者,大牛請不要噴。寫到這里,又復習了好多知識,遇到之前沒發現的錯誤,但是耐心下來,問題總會解決,

 WebService和客戶端源碼有需要的話可以留下郵箱,既然來了,對你有幫助,推薦支持一下唄!

http://www.49028c.com/linmingjun/p/4382565.html 作者


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国模极品一区二区三区| 亚洲2020天天堂在线观看| 精品国产乱码久久久久久婷婷| 国产区亚洲区欧美区| 成人激情视频在线观看| 日韩电视剧免费观看网站| 亚洲国产黄色片| 国产精品久久久久久久app| 91视频免费在线| 激情成人在线视频| 国产亚洲美女精品久久久| 国产精品大片wwwwww| 日韩有码在线视频| 国产欧美婷婷中文| 91精品国产乱码久久久久久久久| 91国产一区在线| 精品久久久91| 国产在线视频2019最新视频| 国产suv精品一区二区三区88区| 韩剧1988免费观看全集| 91最新在线免费观看| 欧美综合第一页| 亚洲黄色www| 久久精品久久久久电影| 成人久久久久爱| 国产精品久久久久久中文字| 日韩精品免费一线在线观看| 国产精品久久久久久久久久三级| 亚洲福利在线看| 欧美影院成年免费版| 国产视频精品va久久久久久| 国产亚洲欧美日韩精品| 亚洲片国产一区一级在线观看| 在线观看日韩欧美| 成人免费视频97| 日韩成人在线视频| 国产精品久久久久久久久免费| 亚洲xxxxx电影| 亚洲级视频在线观看免费1级| 久久97精品久久久久久久不卡| 日韩免费av在线| 亚洲电影免费观看| 不卡av在线网站| 九九热这里只有精品免费看| 日韩中文视频免费在线观看| 国产精品欧美日韩久久| 国产91|九色| 欧美又大又硬又粗bbbbb| 久久国产精品影视| 国内揄拍国内精品少妇国语| 26uuu亚洲国产精品| 欧美成人四级hd版| 亚洲欧美另类中文字幕| 亚洲精品成人久久电影| 高清欧美电影在线| 91av视频在线播放| 亚洲成人网在线观看| 欧美老女人性视频| 亚洲国产精品女人久久久| 久久久久久伊人| 91亚洲人电影| 国产精品18久久久久久麻辣| 精品中文字幕在线2019| 中文字幕亚洲专区| 日本一区二区三区在线播放| 青青草原成人在线视频| 热re91久久精品国99热蜜臀| 久久天天躁夜夜躁狠狠躁2022| 欧美夫妻性生活xx| 亚洲精品欧美日韩| 国产一区二区三区四区福利| 最近2019免费中文字幕视频三| 欧美激情中文网| 国产中文字幕亚洲| 日韩欧美aaa| 日韩高清免费在线| 在线播放日韩欧美| 日本高清久久天堂| 久久久久久网站| 日韩精品中文字幕视频在线| 日本高清不卡在线| 日韩中文字幕国产| 国产日韩中文字幕在线| 疯狂做受xxxx高潮欧美日本| 国产亚洲精品久久久久动| 国产亚洲激情在线| 国产综合在线看| 日韩成人高清在线| 免费不卡欧美自拍视频| 国产精品网站入口| 国产精品xxx视频| 91免费的视频在线播放| 亚洲最大成人免费视频| 最近日韩中文字幕中文| 亚洲精品一区在线观看香蕉| 亚洲第一中文字幕在线观看| 国产精品美女无圣光视频| 亚洲精品一区二区三区不| 亚洲国产古装精品网站| 亚洲色图25p| 精品国产91久久久久久| 一区二区三区视频在线| 97久久精品在线| 欧美激情一区二区三区成人| 国内精品美女av在线播放| 日韩女优人人人人射在线视频| 欧美午夜激情视频| 欧美性猛交xxxx富婆弯腰| 国产精品久久久久999| 91在线精品播放| 欧美亚洲在线视频| 亚洲精品国产精品自产a区红杏吧| 中国人与牲禽动交精品| 亚洲第一级黄色片| 成人a级免费视频| 久久久久久久久久国产| 国产啪精品视频| 91美女片黄在线观| 欧美精品在线看| 色哟哟入口国产精品| 国内揄拍国内精品少妇国语| 主播福利视频一区| 538国产精品一区二区免费视频| 欧美极品少妇xxxxⅹ裸体艺术| 日韩激情视频在线| 亚洲黄色片网站| 日韩精品在线看| 青青草99啪国产免费| 69av成年福利视频| 国产成人久久久| 成人福利网站在线观看11| 91po在线观看91精品国产性色| 亚洲人成网在线播放| 亚洲欧洲视频在线| 中文字幕亚洲欧美日韩2019| 国产日韩在线播放| 亚洲精品视频网上网址在线观看| 亚洲最新在线视频| 欧美性猛交xxxx免费看久久久| 正在播放欧美视频| 91色视频在线导航| 亚洲伊人一本大道中文字幕| 成人在线免费观看视视频| 懂色av影视一区二区三区| 国产日产欧美a一级在线| 在线观看精品国产视频| 久久久久久亚洲精品中文字幕| 亚洲欧美日韩久久久久久| 亚洲国产精品va| 日韩av资源在线播放| 国产精品国产三级国产专播精品人| 久久精品91久久香蕉加勒比| 欧美日韩国产999| 国产日韩av在线播放| 欧美巨乳在线观看| 国产精品久久久久久久久久免费| 久久久91精品国产| 国产精品爽爽ⅴa在线观看| xvideos国产精品| 亚洲欧美国产日韩中文字幕| 国产婷婷成人久久av免费高清| 国产丝袜视频一区| 成人福利网站在线观看| 在线观看91久久久久久|