使用Swift Alamofire从SOAP中提取JSON数据

时间:2017-08-04 07:55:07

标签: json swift soap alamofire

我正在尝试从SOAP Web服务中提取JSON数据。我正在使用Swift Alamofire Library。我收到错误,你能帮我解决一下这个问题吗?

Alamofire.request("http://service.ceylaner.com.tr/suntech/HotelApps_WebServices.asmx").responseJSON { response in
    print("Request: \(String(describing: response.request))")
    print("Response: \(String(describing: response.response))")
    print("Result: \(response.result)")

    if let json = response.result.value {
        print("JSON: \(json)")
    }

    if let data = response.data, let utf8Text = String(data: data, encoding: .utf8)  {
        print("Data: \(utf8Text)")
    }
}

代码输出如下。

Web服务带来了链接所在的页面,但我想获取json数据。我正在寻找一种从SOAP Web服务获取json数据的方法。

Request: Optional(http://service.ceylaner.com.tr/suntech/HotelApps_WebServices.asmx)
Response: Optional(<NSHTTPURLResponse: 0x618000025c00> { URL: http://service.ceylaner.com.tr/suntech/HotelApps_WebServices.asmx } { status code: 200, headers {
    "Cache-Control" = "private, max-age=0";
    "Content-Length" = 6927;
    "Content-Type" = "text/html; charset=utf-8";
    Date = "Fri, 04 Aug 2017 12:18:51 GMT";
    Server = "Microsoft-IIS/10.0";
    "X-AspNet-Version" = "4.0.30319";
    "X-Powered-By" = "ASP.NET";
} })
Result: FAILURE
Data: 

<html>

    <head><link rel="alternate" type="text/xml" href="/suntech/HotelApps_WebServices.asmx?disco" />

    <style type="text/css">

        BODY { color: #000000; background-color: white; font-family: Verdana; margin-left: 0px; margin-top: 0px; }
        #content { margin-left: 30px; font-size: .70em; padding-bottom: 2em; }
        A:link { color: #336699; font-weight: bold; text-decoration: underline; }
        A:visited { color: #6699cc; font-weight: bold; text-decoration: underline; }
        A:active { color: #336699; font-weight: bold; text-decoration: underline; }
        A:hover { color: cc3300; font-weight: bold; text-decoration: underline; }
        P { color: #000000; margin-top: 0px; margin-bottom: 12px; font-family: Verdana; }
        pre { background-color: #e5e5cc; padding: 5px; font-family: Courier New; font-size: x-small; margin-top: -5px; border: 1px #f0f0e0 solid; }
        td { color: #000000; font-family: Verdana; font-size: .7em; }
        h2 { font-size: 1.5em; font-weight: bold; margin-top: 25px; margin-bottom: 10px; border-top: 1px solid #003366; margin-left: -15px; color: #003366; }
        h3 { font-size: 1.1em; color: #000000; margin-left: -15px; margin-top: 10px; margin-bottom: 10px; }
        ul { margin-top: 10px; margin-left: 20px; }
        ol { margin-top: 10px; margin-left: 20px; }
        li { margin-top: 10px; color: #000000; }
        font.value { color: darkblue; font: bold; }
        font.key { color: darkgreen; font: bold; }
        font.error { color: darkred; font: bold; }
        .heading1 { color: #ffffff; font-family: Tahoma; font-size: 26px; font-weight: normal; background-color: #003366; margin-top: 0px; margin-bottom: 0px; margin-left: -30px; padding-top: 10px; padding-bottom: 3px; padding-left: 15px; width: 105%; }
        .button { background-color: #dcdcdc; font-family: Verdana; font-size: 1em; border-top: #cccccc 1px solid; border-bottom: #666666 1px solid; border-left: #cccccc 1px solid; border-right: #666666 1px solid; }
        .frmheader { color: #000000; background: #dcdcdc; font-family: Verdana; font-size: .7em; font-weight: normal; border-bottom: 1px solid #dcdcdc; padding-top: 2px; padding-bottom: 2px; }
        .frmtext { font-family: Verdana; font-size: .7em; margin-top: 8px; margin-bottom: 0px; margin-left: 32px; }
        .frmInput { font-family: Verdana; font-size: 1em; }
        .intro { margin-left: -15px; }

    </style>

    <title>
    HotelApps_WebServices Web Hizmeti
</title></head>

  <body>

    <div id="content">

      <p class="heading1">HotelApps_WebServices</p><br>



      <span>

          <p class="intro">Aşağıdaki işlemler desteklenmektedir. Tam bir tanımlama için lütfen <a href="HotelApps_WebServices.asmx?WSDL">Hizmet Tanımını</a> gözden geçirin. </p>


              <ul>

              <li>
                <a href="HotelApps_WebServices.asmx?op=BI_WebLink">BI_WebLink</a>


              </li>
              <p>

              <li>
                <a href="HotelApps_WebServices.asmx?op=GetCameraList">GetCameraList</a>


              </li>
              <p>

              <li>
                <a href="HotelApps_WebServices.asmx?op=GetHotels">GetHotels</a>


              </li>
              <p>

              <li>
                <a href="HotelApps_WebServices.asmx?op=GetInfo">GetInfo</a>


              </li>
              <p>

              <li>
                <a href="HotelApps_WebServices.asmx?op=GetInfo_Photo">GetInfo_Photo</a>


              </li>
              <p>

              <li>
                <a href="HotelApps_WebServices.asmx?op=GetMainMenu">GetMainMenu</a>


              </li>
              <p>

              <li>
                <a href="HotelApps_WebServices.asmx?op=GetSubMenu">GetSubMenu</a>


              </li>
              <p>

              <li>
                <a href="HotelApps_WebServices.asmx?op=HelloWorld">HelloWorld</a>


              </li>
              <p>

              </ul>

      </span>




    <span>

    </span>

      <span>
          <hr>
          <h3>Bu web hizmeti, varsayılan ad alanı olarak http://tempuri.org/ kullanıyor.</h3>
          <h3>Öneri: Varsayılan ad alanını XML Web hizmeti genel kullanıma açılmadan önce değiştirin.</h3>
          <p class="intro">Her XML Web hizmetinin, istemci uygulamalarının kendisini Web üzerindeki diğer hizmetlerden ayırt edebilmesi için benzersiz bir ad alanı olmalıdır. Geliştirilmekte olan XML Web hizmetleri için http://tempuri.org/ adresi kullanılabilir. Ancak yayımlanmış XML Web hizmetleri daha kalıcı bir ad alanı kullanmalıdır.</p>
          <p class="intro">XML Web hizmetiniz sizin denetiminizde olan bir ad alanı tarafından tanımlanmalıdır. Örneğin şirketinizin Internet etki alanı adını ad alanının bir parçası olarak kullanabilirsiniz. Pek çok XML Web hizmeti ad alanı URL gibi görünse de, Web üzerindeki gerçek kaynakları işaret etmeleri gerekmez. (XML Web hizmeti ad alanları, URI'lerdir.)</p>
          <p class="intro">ASP.NET kullanılarak oluşturulan XML Web hizmetlerinde, varsayılan ad alanını değiştirmek için WebService özniteliğinin Namespace özelliği kullanılabilir. WebService özniteliği, XML Web hizmeti yöntemlerini içeren sınıf için geçerli bir özniteliktir. Aşağıda ad alanını "http://microsoft.com/webservices/" olarak belirleyen bir kod örneği görülüyor:</p>
          <p class="intro">C#</p>
          <pre>[WebService(Namespace="http://microsoft.com/webservices/")]
public class MyWebService {
    // uygulama
}</pre>
          <p class="intro">Visual Basic</p>
          <pre>&lt;WebService(Namespace:="http://microsoft.com/webservices/")&gt; Public Class MyWebService
    ' uygulama
End Class</pre>

          <p class="intro">C++</p>
          <pre>[WebService(Namespace="http://microsoft.com/webservices/")]
public ref class MyWebService {
    // uygulama
};</pre>
          <p class="intro">XML ad alanları hakkında daha fazla bilgi için <a href="http://www.w3.org/TR/REC-xml-names/">XML'de ad alanları</A> ile ilgili W3C önerilerine bakın.</p>
          <p class="intro">WSDL konusunda daha fazla bilgi için, <a href="http://www.w3.org/TR/wsdl">WSDL Belirtimi'ne</a> bakın.</p>
          <p class="intro">URI'ler hakkında daha fazla bilgi için, <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a> belgesine bakın.</p>
      </span>




  </body>
</html>

我正在查看Charles计划中的网络服务。 json数据来自xml标记。 enter image description here

1 个答案:

答案 0 :(得分:0)

我猜是因为你忘了添加info.plist行 enter image description here