簡體   English   中英

iOS從具有JSON參數的AFNetworking HTTP POST方法獲取JSON響應

[英]iOS Get JSON response from AFNetworking HTTP POST method with JSON parameters

https://api.hackerearth.com/codemonk/v1/topicdetail/上使用JSON參數發布時出現404錯誤。 服務器使用POST HTTP方法獲取topic的詳細信息,並且成功時需要JSON響應。 POST參數是topic對象的id POST參數應為JSON。 我正在使用AFNetworking如下-

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];

NSDictionary *params = [NSDictionary dictionaryWithObject:@1 forKey:@"id"];

NSString *str = @"https://api.hackerearth.com/codemonk/v1/topic­-detail/";

NSString *encodedStr = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

[manager POST:encodedStr
   parameters:params
      success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {

    NSLog(@"responseObject : %@",responseObject);


} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {

    NSLog(@"error : %@", error.localizedDescription);

}];

這是常規內容,但是不知道為什么我現在似乎無法正確處理。 我僅收到404 Page Not Found錯誤。 當然,這不是服務器端的問題。 有幫助嗎?

也許這會有所幫助。

AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer];

[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];

operationManagerInstance.requestSerializer = requestSerializer;

=============更新

復制您的網址時,我有404。 這是因為主題細節之間的連字符實際上不是連字符。 這是一個特殊字符,不起作用。

https://api.hackerearth.com/codemonk/v1/topic -detail /

相反,我刪除了它並手動鍵入連字符,它可以正常工作。

刪除以下行

NSString *encodedStr = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

請嘗試以下操作:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];

NSDictionary *params = [NSDictionary dictionaryWithObject:@1 forKey:@"id"];

NSString *str = @"https://api.hackerearth.com/codemonk/v1/topic­-detail/";

[manager POST:str
   parameters:params
      success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {

    NSLog(@"responseObject : %@",responseObject);


} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {

    NSLog(@"error : %@", error.localizedDescription);

}];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM