2016-10-03 17 views
1

私はHTTPを使用するSMSゲートウェイを使用しています。私はチュートリアルやstackoverflowなどの質問を使用してリクエストを作成したが、何か間違っている。私は手動でURLを入力するときに問題なくゲートウェイを使用することができますが、プログラムで行うことはできませんので、おそらく自分のコードが正しくないと思っていました。助けをよろしく!Objective-C HTTP POSTリクエスト

NSString *post = [NSString stringWithFormat:@"user=%@&password=%@&api_id=%@&to=%@&text=%@",_username,_password,_apiID,[_numbers componentsJoinedByString:@","],_txtMsg.text]; 
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setURL:[NSURL URLWithString:@"http://api.mySmsGateWay.com/http/sendmsg"]]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:postData]; 
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", [responseCode statusCode]); 
} 

NSLog (@"%@", [[NSString alloc] initWithData:oResponseData encoding:NSUTF8StringEncoding]); 
+0

あなたはリクエストヘッダをチェックしましたか?認証に関連するパラメータやアプリケーション/ jsonを設定する必要はありません。 – arthurfonseca

+0

URLを書き込んだ(NSString post)のパラメータをブラウザに追加するだけで十分です。 – cameloper

+2

NSData * postData = [post dataUsingEncoding:NSUTF8StringEncoding];を試してください。 URLエンコードについて気にするhttp://stackoverflow.com/questions/8088473/how-do-i-url-encode-a-string – larva

答えて

3
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://api.mySmsGateWay.com/http/sendmsg"]]; 

NSString *userUpdate =[NSString stringWithFormat:@"user=%@&password=%@&api_id=%@&to=%@&text=%@",_username,_password,_apiID,[_numbers componentsJoinedByString:@","],_txtMsg.text, nil]; 

//create the Method "GET" or "POST" 
[urlRequest setHTTPMethod:@"POST"]; 

//Convert the String to Data 
NSData *data1 = [userUpdate dataUsingEncoding:NSUTF8StringEncoding]; 

//Apply the data to the body 
[urlRequest setHTTPBody:data1]; 

NSURLSession *session = [NSURLSession sharedSession]; 
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; 
    if(httpResponse.statusCode == 200) 
    { 
     NSError *parseError = nil; 
     NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError]; 
     NSLog(@"The response is - %@",responseDictionary); 
     NSInteger success = [[responseDictionary objectForKey:@"success"] integerValue]; 
     if(success == 1) 
     { 
      NSLog(@"Login SUCCESS"); 
     } 
     else 
     { 
      NSLog(@"Login FAILURE"); 
     } 
    } 
    else 
    { 
     NSLog(@"Error");  
    } 
}]; 
[dataTask resume]; 
2
NSError *error; 
NSString *urlString = @"http://api.mySmsGateWay.com/http/sendmsg"; 
NSURL *url = [NSURL URLWithString:urlString]; 

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 

NSString * parameterString = [NSString stringWithFormat:@"user=%@&password=%@&api_id=%@&to=%@&text=%@",_username,_password,_apiID,[_numbers componentsJoinedByString:@","],_txtMsg.text]; 


NSLog(@"%@",parameterString); 

[request setHTTPMethod:@"POST"]; 

[request setURL:url]; 

[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 


NSData *postData = [parameterString dataUsingEncoding:NSUTF8StringEncoding]; 

[request setHTTPBody:postData]; 

NSData *finalDataToDisplay = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error]; 

NSMutableDictionary *abc = [NSJSONSerialization JSONObjectWithData: finalDataToDisplay 
                  options: NSJSONReadingMutableContainers 

                  error: &error]; 
NSLog(@"%@",abc); 
関連する問題