7

iOSで作成した新しいオブジェクトを、データ型POSTを使用するメソッドを使用して受信サーバーに送信したいと思います。iOSでサーバーからJSONデータを受信することについて私が知っていることから、 iOS 5の導入により、すべての処理がAppleによって簡素化されたということです。JSON

問題を解決するために私が取った最初のステップは次のようになりました。

    //build an info object and convert to json
    NSDictionary *newDatasetInfo = [NSDictionary dictionaryWithObjectsAndKeys:name, @"name", language, @"language", nil];

    //convert object to data
    NSData* jsonData = [NSJSONSerialization dataWithJSONObject:newDatasetInfo options:kNilOptions error:&error];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:someURLSetBefore];
    [request setHTTPMethod:@"POST"];
    // any other things to set in request? or working this way?

    [[NSURLConnection alloc] initWithRequest:request delegate:self];
    // What to do with NSURLConnection? Or how to send differently?

しかし、POSTメソッドを使用してJSONオブジェクトをサーバーに送信する方法はまったくわかりません。誰か助けてくれませんか?

4

4 に答える 4

16

私は少し試してみてそれを解決しました、これが私のコードです:

    //build an info object and convert to json
    NSDictionary *newDatasetInfo = [NSDictionary dictionaryWithObjectsAndKeys:name, @"name", language, @"language", nil];

    //convert object to data
    NSData* jsonData = [NSJSONSerialization dataWithJSONObject:newDatasetInfo options:kNilOptions error:&error];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:someURLSetBefore];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setHTTPBody:jsonData];

    // print json:
    NSLog(@"JSON summary: %@", [[NSString alloc] initWithData:jsonData
                                                     encoding:NSUTF8StringEncoding]);
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    [connection start];
于 2012-07-11T16:37:56.897 に答える
2
- (IBAction)txtFetchData2:(id)sender {
NSString *queryString = [NSString stringWithFormat:@"http://example.com/username.php?name=%@", [self.txtName text]];
NSMutableURLRequest *theRequest=[NSMutableURLRequest
                          requestWithURL:[NSURL URLWithString:
                                          queryString]
                          cachePolicy:NSURLRequestUseProtocolCachePolicy
                          timeoutInterval:60.0];
NSDictionary* jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                @"Value1", @"Key1",
                                @"Value2", @"Key2",
                                nil];
NSError *error;
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary
                       options:NSJSONWritingPrettyPrinted error:&error];
[theRequest setHTTPMethod:@"POST"];
[theRequest addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
// should check for and handle errors here but we aren't
[theRequest setHTTPBody:jsonData];
[NSURLConnection sendAsynchronousRequest:theRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
    if (error) {
        //do something with error
    } else {
        NSString *responseText = [[NSString alloc] initWithData:data encoding: NSASCIIStringEncoding];
        NSLog(@"Response: %@", responseText);

        NSString *newLineStr = @"\n";
        responseText = [responseText stringByReplacingOccurrencesOfString:@"<br />" withString:newLineStr];            
        [self.lblData setText:responseText];
    }
}];
}
于 2015-12-08T07:47:13.470 に答える
1

NSString * strUrl = @ "URL"; NSURL * url = [NSURL URLWithString:strUrl];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0];

// For set postdata in string
NSString *strPatientID = [NSString stringWithFormat:@"%@%@%@%@",self.txtDegit1.text,self.txtDegit2.text,self.txtDegit3.text,self.txtDegit4.text];
NSString *deviceToken = @"";
postString = [NSString stringWithFormat:@"practiceid=%@&email=%@&password=%@&devicetoken=%@",strPatientID,self.txtUsername.text,self.txtPassword.text,deviceToken];


NSMutableData *httpDataBody = [NSMutableData data];
[httpDataBody appendData:[postString dataUsingEncoding:NSUTF8StringEncoding]];

NSString *strPostLength = [NSString stringWithFormat:@"%lu",[httpDataBody length]];

if ([httpDataBody length ] > 0){

    [request addValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPMethod:@"POST"];
    [request addValue:strPostLength forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:httpDataBody];

}

urlConnection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
[urlConnection start];
于 2015-02-22T09:19:21.363 に答える
0
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://webstar52.com/demo/webcommunity/work.php"]]];
    NSString *post = [NSString stringWithFormat:@"&tag=%@&user_id=%@",@"getcontact",@"10408"]; 
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
    [request setHTTPMethod:@"POST"];      
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
    [request setHTTPBody:postData];
  conn  = [[NSURLConnection alloc]initWithRequest:request delegate:self];
于 2013-12-30T14:52:53.160 に答える