gpt4 book ai didi

ios - 发布序列化对象,AFNetworking 失败

转载 作者:行者123 更新时间:2023-11-29 04:38:24 26 4
gpt4 key购买 nike

我有一个数据对象,称为 DataElement。它包含一串 Base64 转换后的图像字节,以及几个其他字段。

我试图将其发布到我的 wcf 服务,但收到错误“预期状态代码为 (200-299),得到 400。

目标是将数据+图像发布到 WCF(休息)服务,并获取修改后的图像返回 - 对我正在处理的内容进行端到端测试。

在我的 post 方法中,如果我将对象上的编码字符串留空,则一切正常 - 但如果该字符串不是空的,我会收到此错误。

我的 WCF 服务甚至没有受到攻击,它只是直接轰炸到错误。这是我的发帖方法...我做错了什么?

- (void)postDataToServer:(NSString*)server dataElement:(DataElement*)dataElement asJson:(BOOL)useJson
{
NSString *urlString = [[NSString alloc] init];
NSData *encodedData;

urlString = [[server copy] stringByAppendingString:@"EchoXml"];
encodedData = [self encodeDataElementAsXml:dataElement];

NSURL *url = [NSURL URLWithString:urlString];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];

NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:urlString parameters:nil];
[request setHTTPBody:encodedData];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
[_responseTextView setText:[NSString stringWithFormat:@"Successfully uploaded file to %@", urlString]];

NSObject *httpResponseObject;

httpResponseObject = [self parseResponseAsXml:responseObject];

if ([httpResponseObject isKindOfClass:[DataElement class]])
{
DataElement *dataElement = (DataElement *)httpResponseObject;
_responseTextView.text = dataElement.DataText;
if (dataElement.DataImageBase64 != nil)
{
UIImage *dataImage = [self getImageFromString:dataElement.DataImageBase64];
self.responseImageView.image = dataImage;
}
}

NSLog(@"Successfully uploaded file to %@", urlString);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// It goes here immediately
[_responseTextView setText:[NSString stringWithFormat:@"Error: %@", error]];
NSLog(@"Error: %@", error);
}];

[operation start];
}

编辑:抱歉,当我将其粘贴到...时,格式变得不稳定......

最佳答案

代码的重要部分是:

NSString* urlString = [server stringByAppendingString:@"EchoXml"];    
NSURL *url = [NSURL URLWithString:urlString];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSMutableURLRequest *request = [httpClient
requestWithMethod:@"POST" path:urlString parameters:nil];

AFNetorking 请求的实际 URL 是 AFHTTPClient 的基本 URL,并附加了指定的path

您的错误是您再次指定了相同的 urlString

因此,如果 urlStringhttp://your.server.com/EchoXml,那么您请求的有效 URL 为 http:///your.server.com/EchoXmlhttp://your.server.com/EchoXml。如您所见,这不起作用。

将您的基本 URL 和路径修改为更合适的内容。由于您没有说明您要尝试访问的 URL,因此很难提供更多详细信息。也许 server 应该是基本 URL,EchoXml 应该是路径?

关于ios - 发布序列化对象,AFNetworking 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10749904/

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