菜鸟教程小白 发表于 2022-12-13 08:24:25

ios - AFNetworking 中的 JSON 错误


                                            <p><p>我正在尝试使用 AFNetworking 库向这样的 URL 发送发布请求:</p>

<p> <a href="https://m.com/api/2.0/basic/sim_balance.json" rel="noreferrer noopener nofollow">https://m.com/api/2.0/basic/sim_balance.json</a> </p>

<p>这需要 URL 中的用户名和密码作为我的参数(作为 NSDictionary)。</p>

<p>URL 像这样返回 JSON:</p>

<pre><code>{
    &#34;valid_until&#34;: &#34;2011-05-05 22:13:28&#34;,
    &#34;sms&#34;: 0,
    &#34;sms_super_on_net_max&#34;: 300,
    &#34;voice_super_on_net&#34;: 0,
    &#34;credits&#34;: &#34;0.00&#34;,
    &#34;bundles&#34;: [],
    &#34;is_expired&#34;: true,
    &#34;sms_super_on_net&#34;: 0,
    &#34;voice_super_on_net_max&#34;: 3600,
    &#34;data&#34;: 0
}
</code></pre>

<p>这是我的请求函数:</p>

<pre><code> +(void) request:(NSString *)endpoint : (NSDictionary *) parameters
    {
      AFHTTPRequestOperationManager *manager = ;
      [manager POST:endpoint parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSLog(@&#34;JSON: %@&#34;, responseObject);
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@&#34;Error: %@&#34;, error);
      }];
    }
</code></pre>

<p>我总是将此视为错误:</p>

<pre><code>Error: Error Domain=NSCocoaErrorDomain Code=3840 &#34;The operation couldn’t be completed. (Cocoa error 3840.)&#34; (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x904b7e0 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
</code></pre>

<p>我验证了 JSON 并且服务器正在发送有效的 JSON。</p>

<p>有人可以帮我解决这个问题吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>要让AFHTTPRequestOperationManager将请求体序列化为JSON,需要设置其<code>requestSerializer</code>的值:</p>

<pre><code>AFHTTPRequestOperationManager *manager = ;
manager.requestSerializer = ;
;
</code></pre>

<p>如果您不设置 requestSerializer 属性,则管理器对象将使用 <a href="https://en.wikipedia.org/wiki/Application/x-www-form-urlencoded#The_application.2Fx-www-form-urlencoded_type" rel="noreferrer noopener nofollow">x-www-form-urlencoded</a>默认序列化。</p>

<p>但请注意,AFHTTPRequestOperationManager 默认会处理 <em>response</em> 正文中的 JSON。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - AFNetworking 中的 JSON 错误,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/24529755/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/24529755/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - AFNetworking 中的 JSON 错误