2011-06-16 42 views
1

我从一个不同的问题采取了这段代码,我的脚本文件有更多的输入,而不仅仅是mydata,进入mydata的数据也不应该是静态文本,它应该来自NSString。NSMutableURLRequest setHTTPBody

所以我的问题是,我如何发布多个数据到我的脚本,我将如何从NSString输入值,因为我的理解是我不能使用N数据类型与NSString。不知道这是否是正确的术语,所以请纠正我,如果我错了。使用以下

NSMutableData *data = [NSMutableData data]; 

NSString *number = numberIB.text; 
NSString *name = nameIB.text; 

NSString *nameString = [[NSString alloc] initWithFormat:@"name=", name]; 
NSString *numberString = [[NSString alloc] initWithFormat:@"number=", number]; 

NSLog(nameString); 
NSLog(numberString); 

[data appendData:[nameString dataUsingEncoding:NSUTF8StringEncoding]]; 
[data appendData:[numberString dataUsingEncoding:NSUTF8StringEncoding]]; 

NSURL *url = [NSURL URLWithString:@"http://www.siteaddress.com/test.php"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

[request setHTTPMethod:@"POST"]; 
//[request setHTTPBody:[NSData dataWithBytes:data length:strlen(data)]]; 
[request setHTTPBody:data]; 

NSURLResponse *response; 
NSError *err; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 
//NSString *responseString = [[NSString alloc] initWithFormat:@"%@", responseData]; 
NSLog(@"responseData: %@", responseData); 

答案nameString和numberString的NSLogs回来名

const char *bytes = "mydata=Hello%20World"; 

NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com/script.php"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:[NSData dataWithBytes:bytes length:strlen(bytes)]]; 

NSURLResponse *response; 
NSError *err; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 
//NSString *responseString = [[NSString alloc] initWithFormat:@"%@", responseData]; 
NSLog(@"responseData: %@", responseData); 

userData = responseData; 

新问题=和数量=没有任何数据。导致没有数据被发送到我的脚本。

+0

为什么不使用'NSMutableString',然后调用'-dataUsingEncoding:'上而不是使用'NSMutableData'对象的? – 2011-06-16 16:26:39

回答

3

您可以使用NSMutableData对象追加字节根据需要,像这样:

NSMutableData *data = [NSMutableData data]; 
const char *bytes = "mydata=Hello%20World"; 
[data appendBytes:bytes length:strlen(bytes)]; 

//... 

const char *moreBytes = "&someMoreData=Fantastic"; 

[data appendBytes:moreBytes length:strlen(moreBytes)]; 

编辑:如果你想一个NSString追加到数据缓冲区,可以使用-[NSString dataUsingEncoding:],并通过它关闭到-appendData:

NSString *someString = @"blah"; 
[data appendData:[someString dataUsingEncoding:NSUTF8StringEncoding]]; 

[request setHTTPBody:data]; 
+0

我将如何使它,所以我可以在*字节char – mintuz 2011-06-16 15:11:14

+0

@Mintuz内有一个NSString查看更新。 – 2011-06-16 15:17:31

+0

请使用您提供给我的信息查看更新后的问题。 – mintuz 2011-06-16 15:51:29