2014-10-16 62 views
3

我最近想在我的ios應用程序中使用Afnetworking。同一頁通過使用ASIHTTPREQUEST回覆我。但它根本不適用於AFNetworking。這是我的努力。AfNetworking 2.0發佈問題

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    NSDictionary *params = @{@"user[height]": @"10", 
          @"user[weight]": @"255"}; 
    [manager POST:@"http://localhost:8888/TestingPost/post.php" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"JSON: %@", responseObject); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 
    }]; 

現在我已經嘗試了很多選擇,如添加序列化到不同的XML/JSON/HTML。但沒用。

在PHP頁面上,我沒有做任何事情只是打印出任何張貼在頁面上。仍然在這裏。

<?php 
// Show all information, defaults to INFO_ALL 

header('Content-type: application/JSON'); 



print_r($_POST[]); 
/* 
$first_name = $_POST["first_name"]; 
$last_name = $_POST["last_name"]; 
$password = $_POST['password']; 
*/ 

//echo("hurray"); 

?> 

請問您能否給我提供一些啓示。我想從ASIhttprequest切換到最新和更受支持。

這裏是請求

Networking_example[1777:41979] Error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo=0x7f9feae16d60 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x7f9fedb029a0> { URL: http://localhost:8888/TestingPost/post.php } { status code: 500, headers { 
    Connection = close; 
    "Content-Length" = 0; 
    "Content-Type" = "text/html"; 
    Date = "Thu, 16 Oct 2014 18:08:08 GMT"; 
    Server = Apache; 
    "X-Powered-By" = "PHP/5.5.10"; 
} }, NSErrorFailingURLKey=http://localhost:8888/TestingPost/post.php, com.alamofire.serialization.response.error.data=<>, NSLocalizedDescription=Request failed: internal server error (500)} 
+0

順便說一句,你的PHP a指定了一個JSON頭(我認爲這應該是'application/json'),但不返回JSON。將其更改爲返回JSON,或更改該標題(例如'application/text')。 – Rob 2014-10-17 05:59:04

回答

0

如果你的PHP使用$_POST的結果,這意味着你都OK使用默認的AFHTTPRequestSerializerrequestSerializer(即一個application/x-www-form-urlencoded要求)。

但是您的JSON不是一代JSON響應,所以您必須將responseSerializer更改爲AFHTTPResponseSerializer

manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 

而您的PHP頁面報告了500錯誤。這是一個「內部服務器錯誤」,其中the status code definition說:

服務器遇到意外情況,阻止它履行請求。

這表明PHP錯誤。也許你打算:

print_r($_POST); 

一般來說,Web服務交互時,最好生成JSON響應,例如

echo(json_encode($_POST)); 

顯然,如果你生成JSON響應,你可能還需要使用默認設置[AFJSONResponseSerializer serializer],而不是將其更改爲AFHTTPResponseSerializer

+0

,但相同的頁面適用於ASIhttpRequest。如果網頁中存在問題,它也不應該在該庫上工作。我會試試這個,並相應地更新 – 2014-10-17 05:41:57

+0

順便說一句,你可以使用[Charles](http://charlesproxy.com)觀察你的ASI請求並重復AFNetworking。您可以通過這種方式確定兩個請求中的不同之處。 – Rob 2014-10-30 03:06:47