デバッグのために、リクエスト本文全体を出力したいと思います。 AFHTTPClientを使用しています。印刷クライアントはヘッダーなどの情報を提供しますが、post/get paramsはそこにはありません。
それを行う方法はありますか?
AFNetworking 1.xの場合、 AFHTTPRequestOperationLogger
を使用します。
AFNetworking 2.xの場合、 AFNetworkActivityLogger
を使用します。
これらのツールは両方とも、AFNetworkingによるNSNotification
ブロードキャストを使用して、要求と応答のデータをコンソールに記録します。表示される情報の量は構成可能であり、特定の操作を無視するように構成できます。
送信リクエストの本文を確認する場合は、NSURLRequest
のプロパティであるHTTPBody
のAFHTTPRequestOperation
パラメータを確認してください。
たとえば、メソッド_-[AFHTTPClient getPath: parameters: success: failure:]
_では、要求が行われた後、これをデバッガーに入力できます。
_po [[NSString alloc] initWithData:request.HTTPBody encoding:4]
_
4はNSString.hで定義されているように_NSUTF8StringEncoding
_です
NSURLRequest
のHTTPMethod
パラメータは、メソッド(GET、POST、PUTなど)をNSString
として提供します。
サーバーが応答すると、成功完了ブロックにAFHTTPRequestOperation
オブジェクト(デフォルトではoperation
と呼ばれます)が渡されます。あなたはできる:
p (int)[[operation response] statusCode]
ステータスコードを表示するpo [[operation response] allHeaderFields]
_po [operation responseString]
_応答本文を表示するpo [operation responseObject]
_応答オブジェクトを確認するには(シリアル化できなかった場合はnil
になる場合があります)AFNetworking 2.0以降は AFNetworkActivityLogger を使用する必要があります
#import "AFNetworkActivityLogger.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#ifdef DEBUG
[[AFNetworkActivityLogger sharedLogger] startLogging];
[[AFNetworkActivityLogger sharedLogger] setLevel:AFLoggerLevelDebug];
#endif
return YES;
}
3.0
を使用し、CocoaPodsを使用している場合は、適切なブランチからAFNetworkActivityLogger
をプルする必要もあります。
pod 'AFNetworkActivityLogger', git: 'https://github.com/AFNetworking/AFNetworkActivityLogger.git', branch: '3_0_0'
https://github.com/AFNetworking/AFHTTPRequestOperationLogger を見て、デバッグのレベルとしてAFLoggerLevelDebugを確認する必要があります。
#import "AFHTTPRequestOperationLogger.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#ifdef DEBUG
[[AFHTTPRequestOperationLogger sharedLogger] startLogging];
[[AFHTTPRequestOperationLogger sharedLogger] setLevel:AFLoggerLevelDebug];
#endif
return YES;
}
@end
AFNetworking 3.0でロギングのレベルを設定できるようにするには、以下が必要です。
#import <AFNetworkActivityLogger/AFNetworkActivityLogger.h>
#import <AFNetworkActivityLogger/AFNetworkActivityConsoleLogger.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
AFNetworkActivityConsoleLogger *logger = [AFNetworkActivityLogger sharedLogger].loggers.anyObject;
logger.level = AFLoggerLevelDebug;
[[AFNetworkActivityLogger sharedLogger] startLogging];
return YES;
}