菜鸟教程小白 发表于 2022-12-13 03:58:37

python - 如何从 iOS 应用程序调用在 Python 的 ladon 框架中开发的 Web 服务?


                                            <p><p>Web 服务基于 Python 的 <a href="http://ladonize.org/index.php/Main_About" rel="noreferrer noopener nofollow">Ladon</a>框架。</p>

<p>Web 服务 URL 为:<a href="http://ladonize.org/python-demos/Calculator" rel="noreferrer noopener nofollow">http://ladonize.org/python-demos/Calculator</a> </p>

<p>调用web服务的代码如下:</p>

<pre><code>NSString *requestString = [NSString stringWithFormat:
                               @&#34;http://ladonize.org/python-demos/Calculator&#34;];
    NSString *jsonString = ;
    NSData *jsonData = length: ];
    NSURL *url = ;
    NSMutableURLRequest *request = ;
    ;
    ;
    ;
    ;
    ] forHTTPHeaderField:@&#34;Content-Length&#34;];

    NSError *errorReturned = nil;
    NSURLResponse *theResponse =[init];
    NSData *data = ;

    if (errorReturned) {
      NSLog(@&#34;Error %@&#34;,errorReturned.description);
    }
    else
    {
      NSError *jsonParsingError = nil;
      NSMutableArray *arrDoctorInfo= ;
      NSString* newStr = ];
      NSLog(@&#34;Dict %@&#34;,newStr);
    }
</code></pre>

<p>我得到以下回应</p>

<pre><code>&lt;html&gt;
    &lt;head&gt;
      &lt;meta content=&#34;text/html; charset=UTF-8&#34; http-equiv=&#34;Content-Type&#34; /&gt;
      &lt;title&gt;Calculator&lt;/title&gt;
      &lt;style&gt;

    body { margin: 0px; padding: 0px; font-family: verdana; font-size: 12pt; background-color: #FCFCFC; }

    div.service-header {
      height: 34px;
      font-weight: bold; padding: 10px; font-size: 30px; color: white; border-bottom: 1px solid black; background: #70803C;
      filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=&#39;#A0B06C&#39;, endColorstr=&#39;#70803C&#39;); background: -webkit-gradient(linear, left top, left bottom, from(#A0B06C), to(#70803C)); background: -moz-linear-gradient(top,#A0B06C,#70803C);
      text-shadow: #555555 2px 3px 3px;
    }
    div.service-header div.service-title {position: relative; float:left}
    div.service-header .skin-selector {padding-top: 8px; margin-bottom: 0; position:relative; float: right; font-size: 12pt;}

    div.service-overview {
      float: right; margin: 20px; width: 200px;
      -moz-border-radius: 7px 7px 7px 7px; -webkit-border-radius: 7px 7px 7px 7px; border-radius: 7px 7px 7px 7px; background-color: #F6F6F6; border: 1px solid #E6E6E6; border-collapse: separate; font-size: 11px; padding: 10px; margin-right: 20px;
      -moz-box-shadow: 2px 2px 4px #555; -webkit-box-shadow: 2px 2px 4px #555; box-shadow: 2px 2px 4px #555;
    }

    div.service-overview div.headline { font-weight: bold; font-size: 18px; }
    div.service-overview div.title { font-weight: bold; margin: 4px; font-size: 1.2em; }
    div.service-overview ul.list { padding: 0px; margin: 0px; margin-left: 15px; list-style-type: none; }
    div.service-overview ul.list li { font-size: 1.1em; }

    div.service-description { padding: 15px; padding-bottom: 0px; }
    div.service-description div.title { font-weight: bold; font-size: 1.2em; }
    div.service-description p.doc-lines { font-size: 0.8em; }
    div.service-description p.url { font-size: 0.8em; font-style: italic; }
    div.service-description p.url span.url-title { font-weight: bold; }

    div.service-interfaces { padding: 15px; padding-bottom: 0px;}
    div.service-interfaces div.title { font-weight: bold; font-size: 1.2em; }
    div.service-interfaces ul.list { font-size: 0.8em; }
    div.service-interfaces ul.list li { padding: 4px; }

    div.service-api { padding: 15px; padding-bottom: 0px;}
    div.service-api div.methods div.title { font-weight: bold; font-size: 1.2em; }
    div.service-api div.methods ul.list { font-size: 0.9em; list-style-type: none; }
    div.service-api div.methods ul.list li.entry {
      -moz-border-radius: 7px 7px 7px 7px; -webkit-border-radius: 7px 7px 7px 7px; border-radius: 7px 7px 7px 7px; background-color: #F6F6F6; border: 1px solid #E6E6E6;
      border-collapse: separate; font-size: 0.8em; padding: 10px; margin-right: 20px;
      -moz-box-shadow: 2px 2px 5px #555; -webkit-box-shadow: 2px 2px 5px #555; box-shadow: 2px 2px 5px #555;
      margin-bottom: 16px;
    }
    div.service-api div.methods ul.list li.entry div.declaration {
      font-size: 1.5em;
    }
    div.service-api div.methods ul.list li.entry div.declaration span.name { color: #881a1a; }
    div.service-api div.methods ul.list li.entry span.param-type { color: #68387f; }
    div.service-api div.methods ul.list li.entry span.param-name {}
    div.service-api div.methods ul.list li.entry p.doc-lines { font-size: 1.2em; color: #276d11; }
    div.service-api div.methods ul.list li.entry ul.params p.doc-lines { margin-top:0;margin-bottom:6px; font-size: 1.0em; color: #276d11; }

    div.service-api div.types div.title { font-weight: bold; font-size: 1.2em; }
    div.service-api div.types ul.list { font-size: 0.9em; list-style-type: none; }
    div.service-api div.types ul.list li.entry {
      -moz-border-radius: 7px 7px 7px 7px; -webkit-border-radius: 7px 7px 7px 7px; border-radius: 7px 7px 7px 7px; background-color: #F6F6F6; border: 1px solid #E6E6E6;
      border-collapse: separate; font-size: 0.8em; padding: 10px; margin-right: 20px;
      -moz-box-shadow: 2px 2px 5px #555; -webkit-box-shadow: 2px 2px 5px #555; box-shadow: 2px 2px 5px #555;
      margin-bottom: 16px;
    }
    div.service-api div.types ul.list li.entry div.definition {
      font-size: 1.5em;
    }
    div.service-api div.types ul.list li.entry div.definition span.name { color: #881a1a; }
    div.service-api div.types ul.list li.entry span.param-type { color: #68387f; }
    div.service-api div.types ul.list li.entry span.param-name {}
    div.service-api div.types ul.list li.entry p.doc-lines { margin-top:0;margin-bottom:6px; font-size: 1.0em; color: #276d11; }

    div.service-footer { font-size: 0.8em; text-align: center; font-style: italic; padding-top: 10px; padding-bottom: 10px; }

    a:link { color: #00732F; text-decoration: none }
    a:visited { color: #00732F; text-decoration: none }
    a:hover { color: #00732F; text-decoration: underline }

      &lt;/style&gt;
    &lt;/head&gt;
    &lt;body&gt;
      &lt;div class=&#34;service-header&#34;&gt;
            &lt;div class=&#34;service-title&#34;&gt;Calculator&lt;/div&gt;
            &lt;form method=&#34;get&#34; class=&#34;skin-selector&#34;&gt;
                &lt;label for=&#34;skin-select&#34;&gt;skins:&lt;/label&gt;
                &lt;select id=&#34;skin-select&#34; name=&#34;skin&#34; onchange=&#34;document.forms.submit()&#34;&gt;
                  &lt;option value=&#34;&#34;&gt;Default&lt;/option&gt;

                  &lt;option value=&#34;simple&#34;&gt;Simple&lt;/option&gt;

                  &lt;option value=&#34;bluebox&#34;&gt;Bluebox&lt;/option&gt;

                &lt;/select&gt;
            &lt;/form&gt;
      &lt;/div&gt;
      &lt;div class=&#34;service-overview&#34;&gt;
            &lt;div class=&#34;headline&#34;&gt;Overview&lt;/div&gt;
            &lt;div class=&#34;title&#34;&gt;Methods&lt;/div&gt;
            &lt;ul class=&#34;list&#34;&gt;

                &lt;li&gt;
                  &lt;a href=&#34;#add&#34;&gt;&lt;span class=&#34;entry&#34;&gt;add&lt;/span&gt;&lt;/a&gt;
                  ( )
                &lt;/li&gt;

            &lt;/ul&gt;
            &lt;div class=&#34;title&#34;&gt;Types&lt;/div&gt;
            &lt;ul class=&#34;list&#34;&gt;

            &lt;/ul&gt;
      &lt;/div&gt;

      &lt;div class=&#34;service-description&#34;&gt;
            &lt;div class=&#34;title&#34;&gt;Description&lt;/div&gt;
            &lt;p class=&#34;doc-lines&#34;&gt;
                This service does the math, and serves as example for new potential Ladon users.
            &lt;/p&gt;
      &lt;/div&gt;
      &lt;div class=&#34;service-interfaces&#34;&gt;
            &lt;div class=&#34;title&#34;&gt;Interfaces&lt;/div&gt;
            &lt;ul class=&#34;list&#34;&gt;

                &lt;li&gt;soap11 [ &lt;a href=&#34;http://ladonize.org/python-demos/Calculator/soap11&#34;&gt;url&lt;/a&gt; &lt;a href=&#34;http://ladonize.org/python-demos/Calculator/soap11/description&#34;&gt;description&lt;/a&gt; ]&lt;/li&gt;

                &lt;li&gt;jsonwsp [ &lt;a href=&#34;http://ladonize.org/python-demos/Calculator/jsonwsp&#34;&gt;url&lt;/a&gt; &lt;a href=&#34;http://ladonize.org/python-demos/Calculator/jsonwsp/description&#34;&gt;description&lt;/a&gt; ]&lt;/li&gt;

                &lt;li&gt;soap [ &lt;a href=&#34;http://ladonize.org/python-demos/Calculator/soap&#34;&gt;url&lt;/a&gt; &lt;a href=&#34;http://ladonize.org/python-demos/Calculator/soap/description&#34;&gt;description&lt;/a&gt; ]&lt;/li&gt;

            &lt;/ul&gt;
      &lt;/div&gt;
      &lt;div class=&#34;service-api&#34;&gt;
            &lt;div class=&#34;methods&#34;&gt;
                &lt;div class=&#34;title&#34;&gt;Methods&lt;/div&gt;
                &lt;ul class=&#34;list&#34;&gt;

                  &lt;li class=&#34;entry&#34;&gt;
                        &lt;div class=&#34;declaration&#34;&gt;
                            &lt;a name=&#34;add&#34;&gt;&lt;/a&gt;&lt;span class=&#34;name&#34;&gt;add&lt;/span&gt;
                            (



                            &lt;span class=&#34;param-type&#34;&gt;

                              number

                            &lt;/span&gt;
                            &lt;span class=&#34;param-name&#34;&gt;a&lt;/span&gt;


                            ,
                            &lt;span class=&#34;param-type&#34;&gt;

                              number

                            &lt;/span&gt;
                            &lt;span class=&#34;param-name&#34;&gt;b&lt;/span&gt;


                            )
                        &lt;/div&gt;
                        &lt;p class=&#34;doc-lines&#34;&gt;
                            Add two integers together and return the result

                        &lt;/p&gt;


                        &lt;div class=&#34;params-title&#34;&gt;Parameters&lt;/div&gt;
                        &lt;ul class=&#34;params&#34;&gt;

                            &lt;li&gt;
                              &lt;span class=&#34;param-name&#34;&gt;a&lt;/span&gt;: &lt;span class=&#34;param-type&#34;&gt;

                                    number

                              &lt;/span&gt;

                              &lt;br/&gt;
                              &lt;p class=&#34;doc-lines&#34;&gt;
                                    1st integer
                              &lt;/p&gt;
                            &lt;/li&gt;



                            &lt;li&gt;
                              &lt;span class=&#34;param-name&#34;&gt;b&lt;/span&gt;: &lt;span class=&#34;param-type&#34;&gt;

                                    number

                              &lt;/span&gt;

                              &lt;br/&gt;
                              &lt;p class=&#34;doc-lines&#34;&gt;
                                    2nd integer
                              &lt;/p&gt;
                            &lt;/li&gt;

                        &lt;/ul&gt;


                        &lt;div class=&#34;return-type-title&#34;&gt;Return value&lt;/div&gt;
                        &lt;div class=&#34;return-type&#34;&gt;
                            &lt;span class=&#34;param-type&#34;&gt;

                              number

                            &lt;/span&gt;
                            &lt;p class=&#34;doc-lines&#34;&gt;
                              The result of the addition
                            &lt;/p&gt;
                        &lt;/div&gt;
                  &lt;/li&gt;

                &lt;/ul&gt;
            &lt;/div&gt;
            &lt;div class=&#34;types&#34;&gt;
                &lt;div class=&#34;title&#34;&gt;Types&lt;/div&gt;
                &lt;ul class=&#34;list&#34;&gt;

                &lt;/ul&gt;
            &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&#34;service-footer&#34;&gt;Powered by Ladon for Python&lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您使用的 URL 路径似乎错误,应更改为 <code>http://ladonize.org/python-demos/Calculator/jsonwsp</code>。</p>

<p>创建 <code>jsonData</code> 的更好方法是使用 <code>dataUsingEncoding:</code>。</p>

<p>您不应该创建响应:</p>

<pre><code>NSURLResponse *theResponse =[init];
</code></pre>

<p>因为它将作为 <code>sendSynchronousRequest</code> 的一部分创建并返回给您。您应该做的是检查 <code>theResponse</code> 的内容以验证 HTTP 状态代码。</p></p>
                                   
                                                <p style="font-size: 20px;">关于python - 如何从 iOS 应用程序调用在 Python 的 ladon 框架中开发的 Web 服务?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18546693/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18546693/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: python - 如何从 iOS 应用程序调用在 Python 的 ladon 框架中开发的 Web 服务?