iOS调用webservice接口

首先了解下webservice三要素

  1. SOAP:基于XML的一种协议规范,用来描述传递信息的格式(接口调用要遵循此格式)
  2. WSDL:描述如何调用或访问具体的接口
  3. UDDI:管理,查询webservice
    (注:调用接口最重要的就是要遵循SOAP协议格式)

SOAP协议一般格式

 

  
  //Body之间是需要调用的方法以及参数列表
  

下图是具体示例:

Paste_Image.png

调用

- (void)requestData {
    //soap格式要和接口吻合,下面的str仅为参考
    NSString *str = [NSString stringWithFormat:@"\
                          \
                          \
                          <要调用的方法名 xmlns=\"命名空间\">\
                          <参数>参数值\
                          \
                          \
                          "];
    NSURL *url = [NSURL URLWithString:@"接口网址"];
    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];
    NSString *length = [NSString stringWithFormat:@"%lu",(unsigned long)[str length]];
    [request setHTTPMethod:@"POST"];
    [request addValue:@"text/xml; charset=utf-8"forHTTPHeaderField:@"Content-Type"];
    [request addValue:length forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:[str dataUsingEncoding:NSUTF8StringEncoding]];
    // body内容
    [request setHTTPBody:[str dataUsingEncoding:NSUTF8StringEncoding]];
    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    //请求完成是xml格式的,可以先不处理,用字符串接收查看一下
        NSString *resultStr = [[NSString alloc] initWithData:data  encoding:NSUTF8StringEncoding];
        if (error) {
            NSLog(@"---失败----%@", error.localizedDescription);
        }
    }];
    [task resume];
}

得到的数据是xml的,很多情况下我们需要的是json格式的,如果觉得xml解析麻烦的话,可以根据上面的resultStr截取字符串,找到自己需要的一部分,转成data,再转json字典接收.

你可能感兴趣的:(iOS调用webservice接口)