gpt4 book ai didi

objective-c - AFNetworking 2.0 POST 问题

转载 作者:行者123 更新时间:2023-12-03 16:41:00 24 4
gpt4 key购买 nike

我正在将一些代码从 AFNetworking 1.0 切换到 2.0。

在执行 POST 之前,我创建了一个 AFHTTPClient 和一个 AFHTTPRequestOperation,如下所示:

 AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:reqUrl];
[httpClient setParameterEncoding:AFJSONParameterEncoding];
httpClient.operationQueue.maxConcurrentOperationCount = 1;
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
req.viewName, @"viewName",
req.json, @"JSON",
req.dateAdded.description, @"dateTime",
req.latitude, @"latitude",
req.longitude, @"longitude",
req.heading, @"heading",
req.user, @"requestUser",
nil];


AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]];

[op setCompletionBlockWithSuccess:
^(AFHTTPRequestOperation *operation,
id responseObject) {
.......convert responseObject (string) to NSDictionary.....
});

这工作正常,我的 POST 已通过,并且我收到了来自服务器的成功文本响应。 (然后我将其转换为 NSDictionary)

我现在使用 AFHTTPSessionManager 单例,并从中调用 POST 方法。初始化我的 AFHTTPSessionManager 时,我执行以下操作:

AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];
[self setResponseSerializer:responseSerializer];
self.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", nil];

然后在我的其他类(class)中,我像这样调用 POST:

NSDictionary *params = @{
@"viewName":req.viewName,
@"JSON":req.json,
@"dateTime":req.dateAdded.description,
@"latitude":req.latitude,
@"longitude":req.longitude,
@"heading":req.heading,
@"requestUser":req.user
};

[netManager POST:path parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
.....
} failure:^(NSURLSessionDataTask *task, NSError *error) {
//failing here
});

我的数据根本没有改变,但 POST 总是失败并出现错误:

Error Domain=AFNetworkingErrorDomain Code=-1011 "Request failed: bad request (400)" UserInfo=0x1704675c0 {AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0x178234660> { URL: ... } { status code: 400, headers {
"Content-Length" = 2738;
"Content-Type" = "text/html";
Date = "Thu, 15 May 2014 16:13:51 GMT";
Server = "Microsoft-IIS/7.0";
"X-Powered-By" = "ASP.NET";

有什么不同导致新的 AFNetworking 2.0 POST 代码现在无法使用此代码?有什么我需要设置的吗?我传递的 URL 和参数与我发送 POST 的旧方式相同。

谢谢

最佳答案

我的解决方案最终变得非常简单

在我的 AFHTTPSessionManager 初始化中,我没有将 RequestSerializerResponseSerializer 一起设置。

正确设置后,我的帖子再次正常运行。这是我设置的:

[self setResponseSerializer:[AFJSONResponseSerializer序列化器]];self.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", nil];

[self setRequestSerializer:[AFJSONRequestSerializer serializer]];

编辑

Aaron Brager 表示前两行是默认的,不需要。我所需要的只是设置 RequestSerializer。我测试过并且可以验证这一点。

关于objective-c - AFNetworking 2.0 POST 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23683677/

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