菜鸟教程小白 发表于 2022-12-12 11:57:29

php - 将 JSON 字符串从 iOS 应用程序传递到 PHP Webservice


                                            <p><p>我熟悉 iOS/Xcode 开发,现在正在尝试开发自己的 Web 服务。不幸的是,我正在努力寻找将 JSON 字符串从我的 iOS 应用程序传递到 PHP 页面的最佳方法。 </p>

<p>在 xcode 中,我创建了一个类似于以下内容的 JSON 字符串:</p>

<pre><code>{&#34;email&#34; : &#34;&#34;,&#34;name&#34; : &#34;Test Rest&#34;,}
</code></pre>

<p>然后我正在创建一个 URL <code>(GET)</code>:</p>

<pre><code>//localhost/index.php?method=createRestaurant&amp;json={&#34;email&#34; : &#34;&#34;,&#34;name&#34; : &#34;Test Rest&#34;,}
</code></pre>

<p>我正在尝试使用 NetBeans 调试 PHP,但 NetBeans 和 iOS 都因 URL 错误或无效字符错误而失败,据我猜测是 JSON 字符失败{}。</p>

<p>如果我使用 Chrome PostMan 并发出相同的 URL,它可以工作,这证明 PHP 正在工作/正在做我需要它做的事情。</p>

<p>因此,总而言之,在 URL 中包含 JSON 数据的最佳方式是什么需要在 XCode 中进行更改,从而影响 JSON 的编码方式?</p>

<pre><code>NSData *jsonData = ;
    jsonString = [ initWithData:jsonData encoding:NSUTF8StringEncoding];
</code></pre>

<p>在理想情况下,我应该使用 Java,但由于速度、环境成本等原因,我正试图让我的系统使用 PHP。解决方案完成后,我将着手将解决方案移植到 Java。</p>

<p>感谢您的帮助。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>一些想法:</p>

<ol>
<li><p>您的 JSON 无效。你有一个额外的逗号。查看 <a href="http://jsonlint.com" rel="noreferrer noopener nofollow">JSON Lint</a> .</p></li>
<li><p>您应该对 URL 参数进行百分比转义,因为 URL 中不允许使用空格等字符。您可以使用 <a href="http://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/stringByAddingPercentEscapesUsingEncoding%3a" rel="noreferrer noopener nofollow"><code>stringByAddingPercentEscapesUsingEncoding</code></a> .或者更好的是,如果您的字符串可能包含其他一些无法在单个 URL 参数中使用的有效 URL 字符,您可以使用 Core Foundation <a href="https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFURLRef/Reference/reference.html#//apple_ref/c/func/CFURLCreateStringByAddingPercentEscapes" rel="noreferrer noopener nofollow"><code>CFURLCreateStringByAddingPercentEscapes</code></a> ,这给了你更多的控制权。我使用了一个 NSString 类别,它为这个 CoreFoundation 函数提供了一个简单的接口(interface):</p>

<pre><code>@implementation NSString (UrlEncode)

+ (NSString *)stringByAddingPercentEscapesFor:(NSString *)string
                legalURLCharactersToBeEscaped:(NSString *)legalURLCharactersToBeEscaped
                              usingEncoding:(NSStringEncoding)encoding
{
    return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                     (CFStringRef)string,
                                                                     NULL,
                                                                     (CFStringRef)legalURLCharactersToBeEscaped,
                                                                     CFStringConvertNSStringEncodingToEncoding(encoding)
                                                                     ));
}

- (NSString *)stringByAddingPercentEscapesFor:(NSString *)legalURLCharactersToBeEscaped
                              usingEncoding:(NSStringEncoding)encoding
{
    return [NSString stringByAddingPercentEscapesFor:self
                     legalURLCharactersToBeEscaped:legalURLCharactersToBeEscaped
                                       usingEncoding:encoding];
}

- (NSString *)stringByAddingPercentEscapesForURLParameterUsingEncoding:(NSStringEncoding)encoding
{
    return [NSString stringByAddingPercentEscapesFor:self
                     legalURLCharactersToBeEscaped:@&#34;;/?:@&amp;=+$,&#34;
                                       usingEncoding:encoding];
}

@end
</code></pre>

<p>因此,您可以在将 JSON 字符串添加到 URL 之前对其使用 <code>stringByAddingPercentEscapesForURLParameterUsingEncoding</code>。或者您可以自己调用 <code>CFURLCreateStringByAddingPercentEscapes</code>。</p></li>
</ol></p>
                                   
                                                <p style="font-size: 20px;">关于php - 将 JSON 字符串从 iOS 应用程序传递到 PHP Webservice,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/17235712/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/17235712/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: php - 将 JSON 字符串从 iOS 应用程序传递到 PHP Webservice