2016-10-17 20 views
0

Stack Overflowでいくつかの質問をした後、以下のメソッドを使用してレスポンスとレスポンスコードを取得しました。URLからの応答を受け取ることができません

NSMutableURLRequest *NSRequest; 
    NSRequest = [[NSMutableURLRequest alloc] init]; 
    [NSRequest setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@://%@:%@/auth",[[NSUserDefaults standardUserDefaults] stringForKey:@"mongoScheme"],[[NSUserDefaults standardUserDefaults] stringForKey:@"mongoHost"],[[NSUserDefaults standardUserDefaults] stringForKey:@"mongoPort"]]]]; 
    [NSRequest setHTTPMethod:@"GET"]; 
    [NSRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
    [NSRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 


    NSHTTPURLResponse *response = nil; 
    NSData *returnData = [NSURLConnection sendSynchronousRequest:NSRequest returningResponse:&response error:nil]; 

    NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response; 
    int code = [httpResponse statusCode]; 
    NSLog(@"%i",code); 
    NSLog(@"%@",response); 

しかし、私はそれらのいずれかを取得できません。

私は、ログをチェックして、nullなどresponsestatusCode私はこれを取得することができますどのように

0などを発見しましたか?

+0

HTTPステータスコード0はありません。使用しているAPIから返される0が表示されます。 –

+1

私のリポジトリを試すhttps://gist.github.com/jitendrabenzatine/31c0e6171f8df8a878a363a5d240ebf7 Afnetworkingを使用して –

+0

あなたは接続の代わりにNSURLSessionを試してください。 – Misha

答えて

0
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; 
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; 
NSString *string = BaseURLString1; 
NSString* encodedUrl = [string stringByAddingPercentEscapesUsingEncoding: 
          NSUTF8StringEncoding]; 
NSURL *url = [NSURL URLWithString:encodedUrl]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
[[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:encodedUrl parameters:nil error:nil]; 
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { 
    if (error) { 
      NSLog(@"Error: %@", error); 
    } else { 
      NSArray *dictValue=[[NSArray alloc] init]; 
      dictValue=[responseObject valueForKey:@"KEY"]; 
    }]; 
    [dataTask resume]; 
1

警告: 'sendSynchronousRequest(_:returningResponseが:)':、スウィフトのためのObjective-C

NSURLSession *session = [NSURLSession sharedSession]; 
[[session dataTaskWithURL:[NSURL URLWithString:"Your_URL"] 
      completionHandler:^(NSData *data, 
           NSURLResponse *response, 
           NSError *error) { 
      // handle response 

    }] resume]; 

について

var request = NSMutableURLRequest(URL: NSURL(string: "YOUR URL")) 
var session = NSURLSession.sharedSession() 
request.HTTPMethod = "POST" 

var params = ["username":"username", "password":"password"] as Dictionary<String, String> 

var err: NSError? 
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err) 
request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
request.addValue("application/json", forHTTPHeaderField: "Accept") 

var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in 
    println("Response: \(response)")}) 

task.resume() 

だから、これを使用してくださいのiOS 9.0で廃止されました

0

Objective-CでHTTPリクエストを実行するためのオプションは、少し威力を持つことがあります。私にとってうまくいった解決策の1つは、NSMutableURLRequestを使用することです。

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setHTTPMethod:@"GET"]; 
[request setURL:[NSURL URLWithString:url]]; 

NSError *error = [[NSError alloc] init]; 
NSHTTPURLResponse *responseCode = nil; 

NSData *oResponseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseCode error:&error]; 

if([responseCode statusCode] != 200){ 
    NSLog(@"Error getting %@, HTTP status code %i", url, [responseCode statusCode]); 
    return nil; 
} 

return [[NSString alloc] initWithData:oResponseData encoding:NSUTF8StringEncoding]; 
関連する問題