gpt4 book ai didi

objective-c - 如何向此 API 提交 JSON 数组?

转载 作者:太空狗 更新时间:2023-10-30 03:54:01 24 4
gpt4 key购买 nike

我正在尝试使用 Diffbot将一些 URL 解析为相关的文章部分。他们有一个“文章 API”,允许您一次提交一个链接并接收它,但为了速度我更愿意使用 Batch API这基本上允许您将一堆 Article API 请求提交到一个大请求中并获得一个大响应,而不是一次一个。

这是 Batch API 在他们的文档中描述的内容(奇怪的是在登录墙后面):

enter image description here

我将这样提交给 Article API:

NSURLRequest *request = [[AFDiffbotClient sharedClient]
requestWithMethod:@"GET"
path:[NSString stringWithFormat:@"article?token=MYTOKEN&fields=url,text,title&url=%@", URL]
parameters:nil];

而且它运行良好。 AFDiffbotClient 是与 AFNetworking 相结合的单例,可以帮助我更轻松地进行请求,而 URL 参数只是我正在查看的文章的 URL。 (也许我可以在不手动创建 URL 的情况下做到这一点,如果有人可以提供相关提示,奖励加分。)

但是,使用 Batch API,您应该将这些请求中的一堆作为 JSON 数组提交 (POST)。我很困惑我将如何去做这件事。


编辑:我在这方面做了更多工作,并取得了一些进展,但我收到了 400 错误。我不知道我做错了什么,但我必须走在正确的道路上。我正在使用我的 token 和我的 JSON 数组在 POST 请求中传递参数,但它仍然不起作用。

[AFDiffbotClient sharedClient].operationQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount;
NSMutableArray *DiffbotRequests = [[NSMutableArray alloc] init];

for (NSDictionary *URLAndID in URLsAndIDs) {
NSString *articleURL = [URLAndID objectForKey:@"URL"];
NSDictionary *request = @{@"token": @"TOKEN",
@"fields": @"text,title,url",
@"url": articleURL};

[DiffbotRequests addObject:request];
}

NSError *error;
NSData *DiffbotRequestsJSONData = [NSJSONSerialization dataWithJSONObject:DiffbotRequests options:kNilOptions error:&error];
NSString *DiffbotRequestsJSONString = [[NSString alloc] initWithData:DiffbotRequestsJSONData encoding:NSUTF8StringEncoding];

NSDictionary *parameters = @{@"token": @"TOKEN",
@"batch": DiffbotRequestsJSONString};

[[AFDiffbotClient sharedClient] getPath:@"batch" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@", error);
}];

这是我得到的回复:

Error Domain=AFNetworkingErrorDomain Code=-1011 "Expected status code in (200-299), got 400" UserInfo=0xc2ee4d0 {NSLocalizedRecoverySuggestion=, AFNetworkingOperationFailingURLRequestErrorKey= { URL:

然后就是我提交的所有 URL。

编辑 2:在上面添加了 API 的图像。

编辑 3: 当前无法运行的代码:

[AFDiffbotClient sharedClient].operationQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount;
NSMutableArray *DiffbotRequests = [[NSMutableArray alloc] init];

for (NSDictionary *URLAndID in URLsAndIDs) {
NSString *articleURL = [URLAndID objectForKey:@"URL"];
NSDictionary *request = @{@"token": @"TOKEN",
@"fields": @"text,title,url",
@"url": articleURL};

[DiffbotRequests addObject:request];
}

NSError *error;
NSData *DiffbotRequestsJSONData = [NSJSONSerialization dataWithJSONObject:DiffbotRequests options:NSJSONWritingPrettyPrinted error:&error];
NSString *DiffbotRequestsJSONString = [[NSString alloc] initWithData:DiffbotRequestsJSONData encoding:NSUTF8StringEncoding];

NSDictionary *parameters = @{@"token": @"TOKEN",
@"batch": DiffbotRequestsJSONString};


[[AFDiffbotClient sharedClient] setParameterEncoding:AFJSONParameterEncoding];
[[AFDiffbotClient sharedClient] postPath:@"batch" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", responseObject);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@", error);
}];

最佳答案

这是非正式的:

NSURLRequest *request = [[AFDiffbotClient sharedClient] requestWithMethod:@"GET" path:   [NSString stringWithFormat:@"article?token=MYTOKEN&fields=url,text,title&url=%@", URL] parameters:nil];

更好的方法:

 NSArray *paramters = @[@"token": @"MYTOKEN",
@"fields": @"url,text,title",
@"url":@"aURL"
]
NSURLRequest *request = [[AFDiffbotClient sharedClient] requestWithMethod:@"GET" path:@"article" parameters:parameters];

参数将被 URL 编码到您的 URL 中,最终看起来像您的原始 URL。

如果你想要 POST JSONArray,你应该使用 POST 方法,并且有一个 postObject。您还应该设置一个 postObject 编码方法,例如:

typedef enum {
AFFormURLParameterEncoding,
AFJSONParameterEncoding,
AFPropertyListParameterEncoding,
} AFHTTPClientParameterEncoding;

关于objective-c - 如何向此 API 提交 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21082048/

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