2016-11-07 5 views
0

Я хочу сделать http-test-tool, чтобы помочь нам найти проблему пользователей с помощью наших приложений, и мне нравится делать тесты с использованием curl -v. Каждая строка полезна при отладке. Например, IP, Port, Cert и Headers и т. Д. Есть ли какие-нибудь инструменты на платформе iOS?Может ли AFNetworking запрашивать, как curl -v?

curl -v https://stackoverflow.com/ 
* Trying 151.101.129.69... 
* Connected to stackoverflow.com (151.101.129.69) port 443 (#0) 
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 
* Server certificate: *.stackexchange.com 
* Server certificate: DigiCert SHA2 High Assurance Server CA 
* Server certificate: DigiCert High Assurance EV Root CA 
> GET/HTTP/1.1 
> Host: stackoverflow.com 
> User-Agent: curl/7.49.1 
> Accept: */* 
> 
< HTTP/1.1 200 OK 
< Cache-Control: public, max-age=60 
< Content-Type: text/html; charset=utf-8 
< Expires: Mon, 07 Nov 2016 12:33:31 GMT 
< Last-Modified: Mon, 07 Nov 2016 12:32:31 GMT 
< X-Frame-Options: SAMEORIGIN 
< X-Request-Guid: 61dedc6f-13f6-4ea6-970a-a596f885e29c 
< Content-Length: 250615 
< Accept-Ranges: bytes 
< Date: Mon, 07 Nov 2016 12:32:31 GMT 
< Via: 1.1 varnish 
< Connection: keep-alive 
< X-Served-By: cache-hkg6825-HKG 
< X-Cache: MISS 
< X-Cache-Hits: 0 
< X-Timer: S1478521950.280986,VS0,VE949 
< Vary: * 
< X-DNS-Prefetch-Control: off 
< Set-Cookie: prov=ca5856bc-b473-5203-b21e-2b2eb6516fee; domain=.stackoverflow.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly 
< 
... 
... 
... 

ответ

0

Это возможно. Во всяком случае, это не так быстро, как добавление флага в командную строку, как ваш пример, с помощью curl -v.

Возьмем GET:parameters:success:failure:method на AFHTTPSessionManager для выполнения запроса GET. Декларация методы:

- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(nullable id)parameters 
    success:(nullable void (^) (NSURLSessionDataTask *task, id _Nullable responseObject))success 
    failure:(nullable void (^) (NSURLSessionDataTask *_Nullable task, NSError *error))failure; 

Есть два блока интереса здесь: Один успеха (названная очень бойко success), а другие для failure в запросе.

Оба блока возвращают параметр типа NSURLSessionDataTask (который может быть обнулен для события сбоя, если это так, тогда ответа не было, скорее всего, произойдет, когда нет подключения к Интернету). Согласно Apple Documentation for NSURLSessionDataTask, который наследует от NSURLSessionTask, можно получить объект ответа, а затем заголовки. Вот простой example taken from Github:

NSHTTPURLResponse *response = ((NSHTTPURLResponse *)[task response]); 
NSDictionary *headers = [response allHeaderFields]; 
// Do something with the headers in the response here... 

Далее здесь, посмотрите на Symbols for NSURLSessionTask и принять то, что вам нужно.