1
假設調用XML-RPC web服務,web服務供應商的服務器暴露在web服務形式http://example.com:8000/api如何使用Objective C的
什麼是最好的框架或庫來訪問Web服務在IOS 7項目
假設調用XML-RPC web服務,web服務供應商的服務器暴露在web服務形式http://example.com:8000/api如何使用Objective C的
什麼是最好的框架或庫來訪問Web服務在IOS 7項目
有一些支持從XML生成對象圖的編組框架,但是我會簡單地進行以下操作:
我推薦用例具體有效載荷的對象,因爲它們模型需要什麼對於一個給定的用例具體有效載荷對象服務調用 - 支持契約優先開發的概念。這使您可以在不影響與外部系統集成的情況下更改內部模型。同樣,外部API可以改變而不影響你的模型。
您可以在RXMLElement上創建一個類別方法,以返回映射到用例特定對象的元素。典型的映射通常只需要幾行代碼就可以從線格式編組到您的有效載荷對象進行服務調用。
下面是一個示例(我從中獲取的代碼要求將有效內容包裝在SOAP信封中 - 只是忽略該位)。
- (void)request:(MyUseCaseRequstPayload*)request onComplete:(void (^)(MyResponsePayload*))onSuccess
onError:(void (^)(NSError*))onError;
{
//Even more XML! You can stick your payload inside an envelope if you want
SoapEnvelope* envelope = [SoapEnvelope envelopeWithContent:[request xmlString]];
[[BBHTTPRequest postToURL:_serviceUrl data:[envelope data] contentType:@"text/xml"] execute:^(BBHTTPResponse* response)
{
RXMLElement* element = [RXMLElement elementFromXMLData:[response content]];
MyResponsePayload* response = [[element child:@"elementToBeMapped"] asMyObjectType];
if (onSuccess)
{
onSuccess(response);
}
} error:^(NSError* error)
{
LogDebug(@"Got error: %@", error);
if (onError)
{
onError(error);
}
}];
}