-1

我正在创建一个 POST 请求并使用它将视频发送到服务器。在服务器端,我对视频进行解码,并将其保存到文件目录中。如果发送的视频小于 20MB,一切都按预期工作,并且我得到有效的 JSON 响应,否则我的响应字典为 NULL 或返回“操作无法完成。(Cocoa 错误 3840。)”

    $result = mysqli insert statement;

$videoDirectory = 'userVideos/'.$unique_id.'.mp4';
    $decodedVideo =base64_decode($video);


    file_put_contents($videoDirectory, $decodedVideo);

    if (!$result['error']) 
    {
     $e = "register into Str33trider successfully";
     print json_encode(array('results'=>$videoCaption));
     exit();

    }

我什至编辑了我的 apache 配置文件

   <IfModule mod_php5.c>
   php_value post_max_size 200M
   php_value upload_max_filesize 200M
   php_value memory_limit 320M
   php_value max_file_uploads 200M
   php_value max_execution_time 30000
   php_value max_input_time 259200
   php_value session.gc_maxlifetime 1200
   </IfModule>
4

1 回答 1

0

当您收到 POST 请求的响应时,首先检查状态代码。

如果 POST 请求成功:

如果状态码等于 200(正常)或 204(无内容),则响应正文可能为空,或者它描述了操作的结果。使用任一状态代码,请求都没有创建可以由 URI 标识的资源。

如果状态码等于 201(已创建),则请求在服务器上创建了一个资源,并且响应正文可以描述操作的结果,并且响应应该包含一个可以定位新资源的位置标头。

通常,Web 服务 API 描述有关响应正文(如果有)及其内容类型和字符编码的详细信息。可能有不止一种格式可以发送,例如 JSON 或 XML。

如果 POST 请求失败:

服务器将发送相应的状态代码和可选的响应正文,其中包含有关错误的详细信息。通常,服务器可能会以与请求的 Accept 标头不匹配的内容类型发送响应正文。

笔记:

客户端还应始终检查响应正文的内容类型(如果有)并相应地对其进行解码。在服务器错误的情况下,内容类型通常可能是 text/html,而不是 Accept 标头中指定的内容类型,例如 application/json。

因此,如果您记录 Cocoa 错误 3840 的完整错误描述,您将看到给定文本可能不是 JSON,因为它必须以“[”或“{”开头。这表明,您从不是 JSON 的服务器收到错误消息。解码错误消息,使其易于阅读,并将其记录到控制台以查看服务器告诉您的内容。

于 2013-07-27T23:18:15.550 回答