導航:首頁 > IDC知識 > ios請求伺服器

ios請求伺服器

發布時間:2020-12-31 03:40:05

1、如何實現iOS終端於伺服器之間的數據交互

IOS開發終端和伺服器交互目前都是通過restful api的形式。
IOS終端列出需要的API介面,服務端實現這些接回口,中間通過答http協議通信來交互。
REST 指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程序或設計就是 RESTful。
Web 應用程序最重要的 REST 原則是,客戶端和伺服器之間的交互在請求之間是無狀態的。從客戶端到伺服器的每個請求都必須包含理解請求所必需的信息。如果伺服器在請求之間的任何時間點重啟,客戶端不會得到通知。此外,無狀態請求可以由任何可用伺服器回答,這十分適合雲計算之類的環境。客戶端可以緩存數據以改進性能。
在伺服器端,應用程序狀態和功能可以分為各種資源。資源是一個有趣的概念實體,它向客戶端公開。資源的例子有:應用程序對象、資料庫記錄、演算法等等。每個資源都使用 URI (Universal Resource Identifier) 得到一個唯一的地址。所有資源都共享統一的介面,以便在客戶端和伺服器之間傳輸

2、ios通過什麼方法能獲取到伺服器部署的ssl證書

如果iOS APP用了伺服器,需要防止數據嗅探,防止中間人利用偽造證書竊取流量,保護數據安全,這就需要為APP設置HTTPS加密連接。APP設置HTTPS加密連接,需要先向權威CA機構(如沃通WoSign)申請Web伺服器的SSL證書,通過網路開源庫AFNetworking 的安全相關設定配置HTTPS請求,獲取伺服器部署的SSL證書。按照下列方法設置AFNetworking。

設置AFN請求管理者的時候 添加 https ssl 驗證。  

// 1.獲得請求管理者  

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  

// 2.加上這個函數,https ssl 驗證。  

[manager setSecurityPolicy:[self customSecurityPolicy]];  


// https ssl 驗證函數  

  - (AFSecurityPolicy *)customSecurityPolicy {  

    

    // 先導入證書   

    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"xxx" ofType:@"cer"];//證書的路徑  

    NSData *cerData = [NSData dataWithContentsOfFile:cerPath];  

      

    // AFSSLPinningModeCertificate 使用證書驗證模式  

    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];  

       // allowInvalidCertificates 是否允許無效證書(也就是自建的證書),默認為NO    

      

    //validatesDomainName 是否需要驗證域名,默認為YES;

3、ios 伺服器返回錯誤碼怎麼拿到

ios向服務端發起請求報錯:內部伺服器錯誤 (500),有需要的朋友可以參考下。

ios端運用AFHTTP框架向服務端發起請求,但是報錯:

<span style="font-size:10px;">Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: 內部伺服器錯誤 (500)" UserInfo=0x17f95580 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x17daddb0> { URL: http://192.168.1.68/Interface/MessageService.asmx/RegNewsLog } { status code: 500, headers {
"Cache-Control" = private;
"Content-Length" = 28;
"Content-Type" = "text/plain; charset=utf-8";
Date = "Mon, 23 Mar 2015 01:40:47 GMT";
Server = "Microsoft-IIS/7.5";
"X-AspNet-Version" = "4.0.30319";
"X-UA-Compatible" = "IE=EmulateIE7";
"content-script-type" = "text/javascript";
"content-style-type" = "text/css";
} }, NSErrorFailingURLKey=http://192.168.1.68/Interface/MessageService.asmx/RegNewsLog, NSLocalizedDescription=Request failed: 內部伺服器錯誤 (500), com.alamofire.serialization.response.error.data=<e7bcbae5 b091e58f 82e695b0 3a204c6f 6e676974 756465e3 80820d0a>}
</span>

查找原因:

a、一開始以為是傳回來的格式不正確,默認是傳回json數據的,但是我調用的這個方法返回的是字元串數據。所以將服務端返回的數據改成json,還是出錯。

b、將服務端的後台代碼全都注釋,排除是否因為服務端的代碼出錯,導致返回失敗。整個函數直接返回一個json字元,還是報錯,

c、那就是入參的問題了,查看傳入參數的名稱,發現服務端的其中一個參數名稱為:Longitude,但是我傳過去的是Longtitude,就差了一個t,導致了服務端不認傳過來的參數所以報錯。

總結:

1、以後進行服務端請求時,應該完全把服務端的入參名稱粘貼過來就可以了,不要自己寫。容易造成不一致(不一定哪端沒寫對)

2、服務端報錯不一定全都是服務端的原因,完全有可能是客戶端的入參有問題,導致服務端出錯。

4、ios post請求ur無法連接到伺服器什麼原因

隨著asihttprequest的停止更新,許多人都轉向了AFNetworking、 MKNetworkKit.我也是其中一個。於是我從網上找了許多文章作參考,但是結果都是失敗告終。研究了好久都搞不透,最後還是請人幫忙搞定了。經常從網上索取免費資料的一員,要有回報的思想,也為了讓更多的人少走些彎路,所以下面是代碼:(有錯誤可以指出)首先:將AFNetworking、UIKit+AFNetworking 加入到工程然後在要使用的地方#import "AFHTTPRequestOperationManager.h"#import "AFHTTPSessionManager.h"AFHTTPRequestOperationManager的post有兩個方法,一個是普通的post,另一個是可以上傳圖片的1.上傳圖片:AFHTTPRequestOperationManager *manager = [];manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];NSDictionary *parameters =@{@"參數1":@"value1",@"參數2":@"value2"、、、};NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"1.png"], 1.0);[manager POST:@"替換成你要訪問的地址"parameters::^(id<AFMultipartFormData> formData) {[formData appendPartWithFileData :imageData name:@"1" fileName:@"1.png" mimeType:@"image/jpeg"];} success:^(AFHTTPRequestOperation *operation,id responseObject) {NSLog(@"Success: %@", responseObject);} failure:^(AFHTTPRequestOperation *operation,NSError *error) {NSLog(@"Error: %@", error);}];這個方法可以上傳圖片,如果不用上傳圖片,可以把這句去掉[formData appendPartWithFileData :imageDataname:@"1"fileName:@"1.png"mimeType:@"image/jpeg"]2.普通的 *manager = [];manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];NSDictionary *parameters = @{@"參數1":@"value1",@"參數2":@"value2"、、、};[managerPOST:@"替換成你要訪問的地址"parameters:parameterssuccess:^(AFHTTPRequestOperation *operation,id responseObject) {NSLog(@"Success: %@", responseObject);}failure:^(AFHTTPRequestOperation *operation,NSError *error) {NSLog(@"Error: %@", error);}];

5、IOS http請求的get 和 post的請求的區別

Get是向伺服器發索取數據的一種請求,而Post是向伺服器提交數據的一種請求;

Get是獲取信息,而不是修改信息,類似資料庫查詢功能一樣,數據不會被修改;

Get請求的參數會跟在url後進行傳遞,請求的數據會附在URL之後,以?分割URL和傳輸數據,參數之間以&相連,%XX中的XX為該符號以16進製表示的ASCII,如果數據是英文字母/數字,原樣發送,如果是空格,轉換為+,如果是中文/其他字元,則直接把字元串用BASE64加密。

Get傳輸的數據有大小限制,因為GET是通過URL提交數據,那麼GET可提交的數據量就跟URL的長度有直接關系了,不同的瀏覽器對URL的長度的限制是不同的。

GET請求的數據會被瀏覽器緩存起來,用戶名和密碼將明文出現在URL上,其他人可以查到歷史瀏覽記錄,數據不太安全。在伺服器端,用Request.QueryString來獲取Get方式提交來的數據。

Post請求則作為http消息的實際內容發送給web伺服器,數據放置在HTML Header內提交,Post沒有限制提交的數據。Post比Get安全,當數據是中文或者不敏感的數據,則用get,因為使用get,參數會顯示在地址,對於敏感數據和不是中文字元的數據,則用post。

POST表示可能修改變伺服器上的資源的請求,在伺服器端,用Post方式提交的數據只能用Request.Form來獲取。

6、ios怎樣獲取伺服器的ip地址

1.首先獲取你的應用的id。這個可以在itunes上獲取鏈接中有ID。 2.發送POST請求 NSString *URL = @"http://itunes.apple.com/lookup?id=你的應用ID"; 3.從服版務器返回的數據中取出version這個值就權是版本號。接下來在進行比較

7、伺服器如何判別用戶請求的設備為iOS還是Android設備還是windows...

通過 Agent 來判斷相應的智能手機設備,然後跳轉到新的手機站點
經過不懈的努力,終於搜集了比較全的 智能設備 的 Agent,然後又寫了程序,直接上代碼吧,希望能幫助到你

Js代碼
/// 根據 Agent 判斷是否是智能手機
///</summary>
///<returns></returns>
public static bool CheckAgent()
{
bool flag = false;

string agent = HttpContext.Current.Request.UserAgent;
string[] keywords = { "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" };

//排除 Windows 桌面系統
if (!agent.Contains("Windows NT") || (agent.Contains("Windows NT") && agent.Contains("compatible; MSIE 9.0;")))
{
//排除 蘋果桌面系統
if (!agent.Contains("Windows NT") && !agent.Contains("Macintosh"))
{
foreach (string item in keywords)
{
if (agent.Contains(item))
{
flag = true;
break;
}
}
}
}

return flag;
}

8、ios與伺服器如何進行數據交互

請求數據和伺服器交互

9、關於iOS post 請求的辦法 我現在需要發送一組二進制數據到伺服器,然後獲取結果,應當如何操作啊?

NSURLRequest *theRequest=[NSURLRequestrequestWithURL:[NSURLURLWithString:url] cachePolicy::Http_Request_Timeout];
NSURLConnection conn1 = [[NSURLConnectionalloc] initWithRequest:theRequest delegate:self];

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
}

與ios請求伺服器相關的知識