gpt4 book ai didi

objective-c - 使用两个不同的 baseUrl - AFHTTPSessionManager

转载 作者:太空狗 更新时间:2023-10-30 04:00:56 26 4
gpt4 key购买 nike

我正在使用 AFHTTPSessionManager 在 Web 上进行 API 调用。我有 session 管理器的 signleton 对象,它启动一次基本 url。有时,我需要使用不同的 baseurl 进行 api 调用。它在 AFNetworking.h 文件中是只读的。

在这里处理不同的 baseurl 的正确方法是什么?请帮忙。

+ (ApiClient *)sharedClient {

static ApiClient *_sharedClient = nil;

static dispatch_once_t oncePredicate;

dispatch_once(&oncePredicate, ^{
_sharedClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:kTraktBaseURLString]];
});
return _sharedClient;
}

最佳答案

您可以使用 +URLWithString:relativeToURL: 方法的行为来覆盖 baseURL。

马特 mentioned it in Docs

For HTTP convenience methods, the request serializer constructs URLs from the path relative to the baseURL, using NSURL +URLWithString:relativeToURL:, when provided. If baseURL is nil, path needs to resolve to a valid NSURL object using NSURL +URLWithString:.

Below are a few examples of how baseURL and relative paths interact:

NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"];
[NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo
[NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz
[NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo
[NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo
[NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/
[NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/

因此,如果您想为单个请求更改 baseURL,您可以将绝对 URL 作为 URLString 参数传递给 GET:parameters:success:failure: 而不是 URL 路径.

[manager GET:@"http://otherBaseURL.com/url/path" parameters:nil success:... failure:...]

关于objective-c - 使用两个不同的 baseUrl - AFHTTPSessionManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24750638/

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