gpt4 book ai didi

iphone - 使用 ASIHTTPRequest 通过 NSDictionary 发布嵌套参数

转载 作者:可可西里 更新时间:2023-11-01 04:42:39 25 4
gpt4 key购买 nike

尝试将嵌套参数的信息发布到 Rails 应用程序并遇到一些问题。

#pragma mark - Begin Network Operations
- (void)beginNetworkOperation {
NSURL *requestURL = [NSURL URLWithString:[self retrieveURL]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:requestURL];

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_0
[request setShouldContinueWhenAppEntersBackground:YES];
#endif

[request setRequestMethod:@"PUT"];

[request addRequestHeader:@"Content-Type" value:@"application/json"];

[request addPostValue:strClientId forKey:@"client_id"];
[request addPostValue:strAccessToken forKey:@"access_token"];

NSDictionary *assetDictionary = [NSDictionary dictionaryWithObject:self.tags forKey:@"tags"];
[request addPostValue:assetDictionary forKey:@"asset"];

[request setDelegate:self];
[request setDidFinishSelector:@selector(requestFinished:)];
[request setDidFailSelector:@selector(requestFailed:)];
[request startSynchronous];
}

self.tags 只是一个带有逗号分隔值的 NSString,但是一旦到达 rails 服务器,就无法读取标签参数(params[:asset][:tags])。

最佳答案

尝试将字典作为 JSON 字符串而不是字典对象传递给您。

您可以使用 iOS5 JSON 库来做到这一点,或者使用这个库来提高兼容性:

https://github.com/stig/json-framework

我所做的是使用 appendPostData,因为我很确定设置 header (addRequestHeader) 和使用 addPostValue 是不兼容的函数。这是我的代码示例:

ASIFormDataRequest *request;
[request addRequestHeader:@"Content-Type" value:@"application/json"];
[request appendPostData:[[SBJsonWriter new] dataWithObject:myDictionaryToPassAsAnArgument]];

当您使用 appendPostData 时,您不能使用任何 addPostValue。你必须把所有的东西都放在字典里。

关于iphone - 使用 ASIHTTPRequest 通过 NSDictionary 发布嵌套参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015221/

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