菜鸟教程小白 发表于 2022-12-13 12:14:09

php - iOS 9.1 导致我的 JSON NSURL 连接到 PHP 页面时出错


                                            <p><p>在 iOS 9.1 之前,我的应用程序已成功与网络上的 .php 文件通信以获取一些数据库信息。所有这些通信都是使用 <code>JSON</code> 完成的,用于存储两者之间的信息。我知道有一个问题似乎与发送到我的 .php 文件的数据包有关。 </p>

<pre><code>if($_POST == null){ // Check for proper posting.

    $handle= file_get_contents(&#39;php://input&#39;);
    $body = json_decode($handle, true);
}
else{
    $body == $_POST;      
}
</code></pre>

<p>上面的代码似乎是故障点。我收到一个不为空的 <strong>$_POST</strong>。 </p>

<pre><code>-(void)postAuthorize:(NSString*)code :(NSString*)phone{

   //build up the request that is to be sent to the server
   NSMutableURLRequest *request = [ initWithURL:];

   ;
   ;

   //create data that will be sent in the post
   NSMutableDictionary *dictionary = [ init];
   ;
   ;

   NSLog(@&#34;Dictionary: %@&#34;, dictionary);

   //serialize the dictionary data as json
   NSData *data = [ JSONValue];

   NSLog(@&#34;Data: %@&#34;, data);

   ; //set the data as the post body
    forHTTPHeaderField:@&#34;Content-Length&#34;];
   NSLog(@&#34;data length: %lu&#34;, (unsigned long)data.length);
   NSLog(@&#34;Request body %@&#34;, [ initWithData: encoding:NSUTF8StringEncoding]);
   NSURLConnection *connection = [ initWithRequest:request delegate:self];
   if(!connection){
       NSLog(@&#34;Connection Failed&#34;);
   }

}
</code></pre>

<p>以上是 iPhone 上的代码。我检查了 <code>URL</code> 连接正文中的 <code>JSON</code> 以确保其格式不正确。好像没有。</p>

<p>这是我得到的错误:</p>

<blockquote>
<p>Domain=NSCocoaErrorDomain Code=3840.</p>
</blockquote>

<p>但我认为这只是因为 PHP 代码失败了。如果我绕过上面的代码,只发回一个静态值,一切都会顺利。</p>

<p>我真的需要帮助。请如果有人能指出什么是错的。我不知道为什么这已经工作了 2 年,现在它从 iOS 9.0 -> 9.1 中断了</p>

<p>问题出现在我的 PHP 中。我猜苹果在 9.0/9.1 中使用 URL Connection 改变了 $_POST 方法。</p>

<pre><code>$handle= file_get_contents(&#39;php://input&#39;);
$body = json_decode($handle, true);
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>把你的php代码改成这个-</p>

<pre><code>$handle= file_get_contents(&#39;php://input&#39;);

if($handle == null || $handle == &#34;&#34;){
    $body = $_POST;
}else{
    $body = json_decode($handle);
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于php - iOS 9.1 导致我的 JSON NSURL 连接到 PHP 页面时出错,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34216768/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34216768/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: php - iOS 9.1 导致我的 JSON NSURL 连接到 PHP 页面时出错