gpt4 book ai didi

objective-c - AFNetworking POST 请求向服务器发送空白参数

转载 作者:行者123 更新时间:2023-12-01 17:44:03 37 4
gpt4 key购买 nike

我正在尝试使用 AFNetworking 向服务器发送 POST 请求,一切似乎都正常,即应用程序正在成功 ping 服务器。但是,它发送的参数值在到达服务器时是空白的,即使在使用调试器单步执行下面的代码后,这些值似乎已成功传递。对此的任何帮助将不胜感激。

APIClient.m

#import "APIClient.h"
#import "AFJSONRequestOperation.h"

// Removed URL for privacy purposes.
static NSString * const kAPIBaseURLString = @"string goes here";

@implementation APIClient

+ (APIClient *)sharedClient {
static APIClient *_sharedClient;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedClient = [[APIClient alloc] initWithBaseURL:[NSURL URLWithString:kAPIBaseURLString]];
});

return _sharedClient;
}

- (id)initWithBaseURL:(NSURL *)url {
self = [super initWithBaseURL:url];
if (self) {
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];

// Accept HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
[self setDefaultHeader:@"Accept" value:@"application/json"];
}

return self;
}

@end

LoginBrain.m中的登录方法
- (void)loginUsingEmail:(NSString *)email andPassword:(NSString *)password withBlock:(void (^)(NSDictionary *loginResults))block {
self.email = email;
self.password = password;

// Removed path for privacy purposes
[[APIClient sharedClient] postPath:@"insert path here" parameters:[NSDictionary dictionaryWithObjectsAndKeys:email, @"uname", password, @"pw", nil] success:^(AFHTTPRequestOperation *operation, id responseJSON) {
if (block) {
block(responseJSON);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);

if (block) {
block(nil);
}
}];

// Store user data in app?
}

LoginViewController.m 中的登录调用方法
- (IBAction)loginPressed {
[self.loginProgressIndicator startAnimating];
NSString *email = self.emailTextField.text;
NSString *password = self.passwordTextField.text;

[self.brain loginUsingEmail:email andPassword:password withBlock:^(NSDictionary *loginResults) {
[self.loginProgressIndicator stopAnimating];
[self.delegate uloopLoginViewController:self didLoginUserWithEmail:email andPassword:password];
}];
}

更新

我尝试更改 parameterEncoding推荐 here ,但它并没有解决问题。

第二次更新

这是访问 POST 数据的服务器端的 PHP 代码。这是由我的一位同事编写的,因为我在服务器端不做任何事情,并且非常不熟悉它是如何工作的。
header('Content-type: application/json');
$username = $_POST['uname'];
$pw = $_POST['pw'];

服务器代码非常简单。他有某种日志脚本来检查变量值是什么,他说客户端正在访问服务器,但变量值是空白的。

第三次更新

这是通过生成 print_r 的 HTTP 请求转储。的 $_REQUEST多变的:
Array ( [sid] => FwAqvZrfckw )

这是 $_POST 的转储多变的。如您所见,它完全是空白的:
Array ( )

第四次更新

我用了 Wireshark在将数据包发送到服务器之前捕获数据包,一切似乎都井井有条:
Accept: application/json
Content-Type: application/x-www-form-urlencoded; charset=utf-8

POST参数也都在那里。我们还在服务器端创建了一个测试文件,刚刚做了一个测试 POST确保那里的代码正常工作,而且确实如此。

最佳答案

谢谢你。

遇到同样的问题,我需要使用 AFFormURLParameterEncoding。

因此,为了简化所有线程,您必须使用:[[APIClient sharedClient] setParameterEncoding:AFFormURLParameterEncoding];

关于objective-c - AFNetworking POST 请求向服务器发送空白参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216243/

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