php - 请求失败 : unacceptable content-type: image/jpg using AFNetworking 2. 5
<p><p>我知道这个问题已经在堆栈溢出中被问过好几次了。但我仍然对此感到很困惑。我试过用</p>
<pre><code>manager.responseSerializer.acceptableContentTypes = ;
</code></pre>
<p>但在我添加 header("Content-type:application/json"); 之前我仍然收到错误消息在我的 php 文件中。但是我的 php 文件中没有 jason 结构。 </p>
<p>我的ios端是:</p>
<pre><code>AFHTTPRequestSerializer *serializer = ;
NSError *__autoreleasing* error;
// 2. Create an `NSMutableURLRequest`.
NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:@"POST" URLString:@"http://192.168.199.118/search.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData
name:@"uploadedfile"
fileName:@"image.jpg"
mimeType:@"image/jpg"];
} error:(NSError *__autoreleasing *)error];
AFHTTPRequestOperationManager *manager = ;
manager.responseSerializer = ;
manager.responseSerializer.acceptableContentTypes = ;
AFHTTPRequestOperation *operation =
[manager HTTPRequestOperationWithRequest:request
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failure %@", error.description);
if (error.code == -1001) {
;
}
}];
</code></pre>
<p>我的php端是:</p>
<pre><code><?php
#function for streaming file to client
function streamFile($location, $filename, $mimeType='image/jpg')
{ if(!file_exists($location))
{ header ("HTTP/1.0 404 Not Found");
return;
}
//header("Content-Type: $mimeType");
header("Content-type:application/json");
readfile($location);
}
#**********************************************************
#Main script
#**********************************************************
header("Content-type:application/json");
#<1>set target path for storing photo uploads on the server
$photo_upload_path = "upload/";
$photo_upload_path = $photo_upload_path.basename( $_FILES['uploadedfile']['name']);
$photo_upload_indicator_path = "upload/image_ready";
#<2>set target path for storing result on the server
$downloadFileName = 'processed_';
$processed_photo_output_path = "output/processed_";
$processed_photo_output_path = $processed_photo_output_path.basename( $_FILES['uploadedfile']['name']);
$processed_photo_output_indicator_path = "output/result_ready";
$downloadFileName = $downloadFileName.basename( $_FILES['uploadedfile']['name']);
#<3>modify maximum allowable file size to 10MB and timeout to 300s
ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
#<4>Get and stored uploaded photos on the server
if(copy($_FILES['uploadedfile']['tmp_name'], $photo_upload_path)) {
#<5>signal that the image is ready
$handle = fopen($photo_upload_indicator_path, 'w');
fprintf($handle, '%s', $photo_upload_path);
fclose($handle);
#<6>wait until the result is ready
while (!file_exists($processed_photo_output_indicator_path))
{
usleep(1000000);
}
usleep(1000000);
unlink($processed_photo_output_indicator_path);
#<7>stream processed photo to the client
streamFile($processed_photo_output_path, $downloadFileName,'image/jpg');
} else{
echo "There was an error uploading the file to $photo_upload_path !";
}
?>
</code></pre>
<p> header ("Content-type:application/json");帮助我解决问题。但我不知道为什么。
如果删除此代码,我将始终收到“请求失败错误”。如果我想从带有图像的 php 服务器接收一些信息,哪种方式是最好的?非常感谢您的任何建议。 </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您的 PHP 脚本在注释 <code>#Main script</code></p> 正下方的行中设置了一个 <code>Content-type</code>header
<p>您应该删除它并使用正确的图像类型进行响应,<code>image/jpeg</code>(包括“e”)。 AFNetworking 附带一个响应序列化程序,<a href="http://cocoadocs.org/docsets/AFNetworking/2.5.0/Classes/AFImageResponseSerializer.html" rel="noreferrer noopener nofollow"><code>AFImageResponseSerializer</code></a> ,它将自动将 Content-type <code>image/jpeg</code> 的响应解码为 UIImage:</p>
<pre><code>AFHTTPRequestOperationManager *manager = ;
manager.responseSerializer = ;
AFHTTPRequestOperation *operation =
[manager HTTPRequestOperationWithRequest:request
success:^(AFHTTPRequestOperation *operation, UIImage *responseImage) {
NSLog(@"Success %@", responseImage);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failure %@", error.description);
if (error.code == -1001) {
;
}
}];
</code></pre></p>
<p style="font-size: 20px;">关于php - 请求失败 : unacceptable content-type: image/jpg using AFNetworking 2. 5,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/27757988/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/27757988/
</a>
</p>
页:
[1]