4

以下のコードを介してJSONデータをWebサーバーに送信しようとしています。なんらかの理由でリクエストが出ていないようです。私が行方不明になっているように見えますか?また、NSURLConnection(retStr)の結果は常に空ですか?

NSDictionary *data = [NSDictionary dictionaryWithObject:@"test sending ios" forKey:@"value1"];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data options:kNilOptions error:&error];

    NSURL *url = [NSURL URLWithString:@"http://webserveraddress"];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url cachePolicy:nil timeoutInterval:60];
[req setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[req setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[req setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];
[req setHTTPMethod:@"POST"];
[req setHTTPBody:jsonData];
NSString *retStr = [[NSString alloc] initWithData:[NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil] encoding:NSUTF8StringEncoding];
4

3 に答える 3

3

ポスト変数の単純なデータをphpを実行しているWebサーバーに送信するには、これを次のように実行します。

NSString * key = [NSString stringWithFormat:@"var1=%@&var2=%@&var3=%@",@"var1String" ,@"var2string" ,[NSnumber numberWithBool:YES]];

NSURL * url = [NSURL URLWithString:@"http://webserver.com/yourScriptPHP.php"];

NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];

[request setHTTPMethod:@"POST"];
[request setHTTPBody:[key dataUsingEncoding:NSUTF8StringEncoding]];

[[NSURLConnection alloc] initWithRequest:request delegate:self];
// this is for you to be able to get your server answer. 
// you will need to make your class a delegate of NSURLConnectionDelegate and NSURLConnectionDataDelegate
myClassPointerData = [[NSMutableData data] retain];

埋め込む

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [myClassPointerData appendData:data]
}

-(void)connection:(NSURLConnection *)connection DidFinishLoading {
    // do what you want with myClassPointerData the data that your server did send you back here
    // for info on your server php script you just need to do: echo json_encode(array('var1'=> $var1, 'var2'=>$var2...));
    // to get your server sending an answer
}
于 2012-06-15T08:20:22.010 に答える
0

一度このようにチェック

ASIFormDataRequest * request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@ "ur url"]];

[request setPostValue:appdelegate.userid forKey:@"userid"];
[request setPostValue:self.nameLbl.text forKey:@"username"];
[request setPostValue:self.website.text forKey:@"website"];

NSLog(@"~~~~~~ request~~~~~ %@",request);

[request setTimeOutSeconds:5000];
[request startSynchronous];
于 2012-06-14T13:15:34.017 に答える
0

JSONとして送信する代わりに、POSTメソッドを使用してリクエストのHTTPBodyを設定することにより、通常の方法で送信することができます。

'http://abc.example.com/user_profile.json?user[first_name]=fdffdf&user[last_name]=dffdf'などの呼び出しを行う必要がある場合にのみ行う必要のある差異

つまり、辞書キーにプレフィックスを付ける必要があります。つまり、「first_name=fdffdf」を「user[first_name]=fdffdf」に変更する必要があります。

このコードを試して、パラメーターディクショナリをJSONに必要な形式に変更してください。

for (id key in [self allKeys]) {
NSString *newKey = [NSString stringWithFormat:@"%@[%@]", parent, key];
[result setObject:[self objectForKey:key] forKey:newKey];
} 
于 2013-04-02T12:58:01.447 に答える