首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSMutableURLRequest setHTTPBody

NSMutableURLRequest setHTTPBody
EN

Stack Overflow用户
提问于 2011-06-16 22:32:45
回答 1查看 13.5K关注 0票数 1

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

所以我的问题是,我如何将多个数据片段发布到我的脚本中,以及如何从NSString输入值,因为我的理解是,我不能将NSStrings与c数据类型一起使用。我不确定这是不是正确的术语,所以如果我错了,请纠正我。

代码语言:javascript
复制
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;

使用下面的答案创建新问题

代码语言:javascript
复制
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返回name=和number=时没有任何数据。导致没有数据发送到我的脚本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-16 22:43:42

您可以根据需要使用NSMutableData对象来追加字节,如下所示:

代码语言:javascript
复制
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:

代码语言:javascript
复制
NSString *someString = @"blah";
[data appendData:[someString dataUsingEncoding:NSUTF8StringEncoding]];

[request setHTTPBody:data];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6373634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档