gpt4 book ai didi

iphone - HTTP POST JSON 方法

转载 作者:可可西里 更新时间:2023-11-01 16:25:59 26 4
gpt4 key购买 nike

您好,我需要帮助来建立与 Web 服务的 HTTP POST 连接。我完全不知道该怎么做。

我只在制作 NSURLConnection 方面有过经验,我将所需的输入参数作为 URL 的一部分进行传递。现在看起来不一样了,因为我只提供了一个网站和请求 JSON 正文。

{
"lastmodified":"String content",
"passengerId":9223372036854775807,
"password":"String content",
"userId":"String content"
}

任何人都可以阐明这一点吗?假设网站是 www.myURL/operations/AddItem.com

编辑 - 我在这里做错了什么?

NSError *theError = nil;
NSArray *keys = [NSArray arrayWithObjects:@"userId", @"password", nil];
NSArray *objects = [NSArray arrayWithObjects:userNameTextField.text, passwordTextField.text, nil];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

NSString *myJSONString =[jsonDictionary JSONRepresentation];
NSData *myJSONData =[myJSONString dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"myJSONString :%@", myJSONString);
NSLog(@"myJSONData :%@", myJSONData);

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://153.20.32.74/11AprP306/passenger/item"]];
[request setHTTPBody:myJSONData];
[request setHTTPMethod:@"POST"];

NSURLResponse *theResponse =[[NSURLResponse alloc]init];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&theError];
NSLog(@"response : %@", theResponse);
NSLog(@"error : %@", theError);
NSLog(@"data : %@", data);
NSMutableString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"string: %@", string);
NSDictionary *jsonDictionaryResponse = [string JSONValue];
NSLog(@"dic: %@", jsonDictionaryResponse);
[string release];
[theResponse release];

我正在阅读 string: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1 transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Request Error</title>
<style>BODY {..... 'The incoming message has an unexpected message format 'Raw'. The expected message formats for the operation are 'Xml', 'Json'.

是不是因为我没有传递一些值(lastmodified & passengerId)?我不知道他们为什么需要这两个参数,因为此请求只是创建一个新帐户。

最佳答案

您可以按照@darvids0n 的建议使用ASIHTTPRequest,或者您也可以使用标准的iOS NSMutableURLRequest 方法,如下所示:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:myURL]; // Assumes you have created an NSURL * in "myURL"
[request setHTTPMethod:@"POST"];
[request setHTTPBody:myJSONData]; // Assumes you have created an NSData * for your JSON
[request setValue:@"application/json" forHTTPHeaderField:@"content-type"];

无论您选择做什么,您都需要将 Objective-C 对象转换为 JSON 字符串,然后将其转换为 NSData。以下是如何使用 SBJSON 同时执行这两个步骤的示例。框架。

SBJsonWriter *writer = [[SBJsonWriter alloc] init];
NSData *myJSONData = [writer dataWithObject:myDataDictionary];

上面将字典转换为 JSON 字符串,然后使用字符串的 UTF8 编码将该字符串转换为 NSData。如果你想要不同的编码,你将不得不中断使用 [writer stringWithObject:myDataDictionary] 并自己编码。

关于iphone - HTTP POST JSON 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com