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:
@"http://ladonize.org/python-demos/Calculator"];
NSString *jsonString = ;
NSData *jsonData = length: ];
NSURL *url = ;
NSMutableURLRequest *request = ;
;
;
;
;
] forHTTPHeaderField:@"Content-Length"];
NSError *errorReturned = nil;
NSURLResponse *theResponse =[init];
NSData *data = ;
if (errorReturned) {
NSLog(@"Error %@",errorReturned.description);
}
else
{
NSError *jsonParsingError = nil;
NSMutableArray *arrDoctorInfo= ;
NSString* newStr = ];
NSLog(@"Dict %@",newStr);
}
</code></pre>
<p>我得到以下回应</p>
<pre><code><html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<title>Calculator</title>
<style>
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='#A0B06C', endColorstr='#70803C'); 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 }
</style>
</head>
<body>
<div class="service-header">
<div class="service-title">Calculator</div>
<form method="get" class="skin-selector">
<label for="skin-select">skins:</label>
<select id="skin-select" name="skin" onchange="document.forms.submit()">
<option value="">Default</option>
<option value="simple">Simple</option>
<option value="bluebox">Bluebox</option>
</select>
</form>
</div>
<div class="service-overview">
<div class="headline">Overview</div>
<div class="title">Methods</div>
<ul class="list">
<li>
<a href="#add"><span class="entry">add</span></a>
( )
</li>
</ul>
<div class="title">Types</div>
<ul class="list">
</ul>
</div>
<div class="service-description">
<div class="title">Description</div>
<p class="doc-lines">
This service does the math, and serves as example for new potential Ladon users.
</p>
</div>
<div class="service-interfaces">
<div class="title">Interfaces</div>
<ul class="list">
<li>soap11 [ <a href="http://ladonize.org/python-demos/Calculator/soap11">url</a> <a href="http://ladonize.org/python-demos/Calculator/soap11/description">description</a> ]</li>
<li>jsonwsp [ <a href="http://ladonize.org/python-demos/Calculator/jsonwsp">url</a> <a href="http://ladonize.org/python-demos/Calculator/jsonwsp/description">description</a> ]</li>
<li>soap [ <a href="http://ladonize.org/python-demos/Calculator/soap">url</a> <a href="http://ladonize.org/python-demos/Calculator/soap/description">description</a> ]</li>
</ul>
</div>
<div class="service-api">
<div class="methods">
<div class="title">Methods</div>
<ul class="list">
<li class="entry">
<div class="declaration">
<a name="add"></a><span class="name">add</span>
(
<span class="param-type">
number
</span>
<span class="param-name">a</span>
,
<span class="param-type">
number
</span>
<span class="param-name">b</span>
)
</div>
<p class="doc-lines">
Add two integers together and return the result
</p>
<div class="params-title">Parameters</div>
<ul class="params">
<li>
<span class="param-name">a</span>: <span class="param-type">
number
</span>
<br/>
<p class="doc-lines">
1st integer
</p>
</li>
<li>
<span class="param-name">b</span>: <span class="param-type">
number
</span>
<br/>
<p class="doc-lines">
2nd integer
</p>
</li>
</ul>
<div class="return-type-title">Return value</div>
<div class="return-type">
<span class="param-type">
number
</span>
<p class="doc-lines">
The result of the addition
</p>
</div>
</li>
</ul>
</div>
<div class="types">
<div class="title">Types</div>
<ul class="list">
</ul>
</div>
</div>
<div class="service-footer">Powered by Ladon for Python</div>
</body>
</html>
</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]