2012-01-16 13 views
1

こんにちは私はRestkitを初めて使用しています。私の心にはいくつか質問があります。最初にrestkitを使用してポストリクエストを送信するとき、リクエストJsonまたはXMLはどのような形式ですか、どのように指定できますか?私は、ユーザーを認証するためにPOST要求をサーバーに送信しています。詳細がXML形式で正しい場合は、コンフォメーションを受け取る必要があります。RestKitを使用してXML形式で投稿リクエストを送信

NSArray *objects = [NSArray arrayWithObjects: email, password, nil]; 
NSArray *keys = [NSArray arrayWithObjects:@"username", @"password", nil]; 
NSDictionary *params = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 

[[RKClient sharedClient] post:@"/login" params:params delegate:self]; 

これは私が使用しているコードで、Webサービスによって受け入れられたXMLは、それが要求を送信しているが、私は右の応答を取得していない午前

<login> 
    <username>[email protected]</username> 
    <password>Password</password> 
</login> 

のようになります。サーバーに送信する要求の形式は何かを確認する方法はありますか?

答えて

2

あなたは間違った呼び出しを使用しているようです。あなたが使用しているポストコールでは、残りのサービスがlogin = username & password = skdjghのようなparams、つまりXMLではなく「通常のREST形式」であることを前提としています。 RestKitを使用してテキストのブロックを投稿するための呼び出しを見つけるか、別の呼び出しを使用する必要があります。つまり、XMLを自分で作成するか(またはライブラリを使用する)、ポストを介してXMLを送信する必要があります。

+0

を使用している:ここでは

は私のプロジェクトの1からコードスニペットですそれを行う方法? – greenLizard

2

これを試してください。私はそれがあなたがしたいことをすると思われると思う。私はそれを働かせることはありませんでしたが、私は自分のコードに間違ったことがありました。

RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:@"http://mysite.com"]; 

    objectManager.serializationMIMEType = RKMIMETypeXML; 

:これは、サーバーにXMLを送信していない、あなたに戻ってXMLを送信するために何をすべきかかもしれません。私の頭の上から知りません。

1

私はobjectManager.serializationMIMEType = RKMIMETypeXML;でしたが、私の要求のContent-Lengthは0で、HTTP Bodyは空です。 RKMIMETypeJSONを使用すると、リクエストは正常に見えますが、xmlのシリアル化は機能しません。これがどうして起こるのか?有効なシリアル化を使用してxmlを送信するには、他に何が必要ですか?

私はまた、ドキュメントでこれを見つけた:「をRestKitは現在RKMIMETypeFormURLEncodedとRKMIMETypeJSONにシリアル化をサポートしています」。では、RKObjectManagerを使用してxmlを投稿するにはどうすればよいですか?

+0

また知りたいですか? – Carl

+0

私の問題正確に –

0

私はこれをASIHTTPRequestとXMLWriterを使って解決しました。残念ですが、RestKitはXMLの投稿をサポートしていないようです。

私は物事を得るためにRKを使います。

2

RKRequestSerializationクラスを使用すると、xmlシリアル化を行うことができます。 uは私を提案することができます...

#import <RestKit/RKRequestSerialization.h> 

[RKObjectManager sharedManager].acceptMIMEType = RKMIMETypeTextXML; 

NSString *loginData = @"<Login><UserId>test</UserId><Password>test</Password></Login>"; 

[[RKClient sharedClient] setValue:@"XYZ01" forHTTPHeaderField:@"ServiceId"]; 
[[RKClient sharedClient] post:@"/login" 
         params:[RKRequestSerialization serializationWithData:[loginDetails dataUsingEncoding:NSUTF8StringEncoding] MIMEType:RKMIMETypeTextXML] 
        delegate:self]; 

そして、ここでのダンプがRKLogConfigureByName("RestKit/Network", RKLogLevelTrace)

2012-08-12 11:28:41.476 MyApp[730:707] T restkit.network:RKRequest.m:402 Prepared POST URLRequest '<NSMutableURLRequest https://someserver.com/MyApp/rest/service/request>'. HTTP Headers: { 
    Accept = "text/xml"; 
    "Content-Length" = 75; 
    "Content-Type" = "text/xml"; 
    ServiceId = XYZ01; 
}. HTTP Body: <Login><UserId>test</UserId><Password>test</Password></Login> 
+0

ちょっとイムラン、どのように応答天気を見るにはそれが格納されているかどうか?応答を見るには – Babul

+0

、あなたはRKRequestDelegateの 'didLoadResponse'メソッドを実装する必要があります。 –

関連する問題