0

iOS アプリのネットワーク操作のベースとして MKNetworkKit を使用することを考えていました。initWithHostName:customerHeaders: および initWithHostName: apiPath:customerHeaders: メソッドの使用について少し混乱しています。

アプリでは、多数のホストと通信する必要があり、ホスト名と URL を指定する方法が異なります。例えば:

HostNameX.com - HostX のドメイン名、

最初のホストには、次のようにホスト名の前にサービスが追加されています。

serviceA.HostNameX.com?someparam=value ServiceA のパス (情報を返す) serviceB.HostNameX.com?someparam=value ServiceB のパス (情報を返す)


HostNameY.com - HostY のドメイン名

2 番目のホストには、次のようにホスト名に追加されたサービスまたはコマンドがあります。

HostNameY.com/serviceA?someparam =value ServiceA のパス (情報を返す) HostNameY.com/serviceB?someparam =value ServiceB のパス (情報を返す)


HostNameY.com の場合、MKEngine インスタンスを 1 つ作成し、"serviceA?someparam=value" または "serviceB?someparam=value" 文字列を path パラメーターとして operationWithPath:params:httpMethod:ssl に渡すことを考えていました。方法。

これは私がやりたいことにはうまくいきますが、HostNameX.com の場合、「serviceA」を前に付ける方法がわかりません。または「サービスB」。ホスト名に?私が確認できる唯一の方法は、「serviceA」用と「serviceB」用に 1 つずつ、2 つの別個の MKEngine インスタンスを作成することです。これは事実ですか?

何か不足していますか、または initWithHostName:apiPath:customerHeaders: を呼び出した後にサービスをドメイン名の前に追加できる方法はありますか?

ご提案いただきありがとうございます。すべての最高のデイブ

4

2 に答える 2

0

operationWithURLString を使用して独自の URL 文字列を作成することで、この問題を解決しました。とにかく、これは、パラメーターとして渡すことができるものを処理するためだけに多数の MKEngine インスタンスを割り当てるよりも、はるかに優れたソリューションのように思えます。このようにして、パス コンポーネントとパラメーターを URL 文字列に追加することもできます。次に例を示します。

http://serviceA.hostname.com/fred/simmons?isvip=true&hasBooked=false

興味深いことに、 operationWithURLString:params:httpMethod: に渡されるパラメーター ディクショナリは、次の 2 つの方法で機能します。

httpMethod が GET の場合、ディクショナリは URL でパラメーターを渡すために使用されます。httpMethod が POST または PUT (または DELETE?) の場合、ディクショナリはフォーマットされ、リクエスト ボディとして送信されます。

質問 - POST コマンドにパラメータを指定することは有効ですか?

例えば:

http://bookingservice.hostname.com/bookings?isvip=true&lastname=simmons

これは、GET ではなく POST として有効な URL ですか?

于 2014-02-04T00:57:00.283 に答える
0

HostNameY.com については、その通りです。サービス名はパスの一部にすることができます。

そして、あなたが言及したように、MKEngine の複数のインスタンスを使用して HostNameX.com を管理する必要があります。

複数のインスタンスを使用する理由: ホスト名は MKNetworkEngine のプライベート プロパティであり、ホスト名を変更する唯一の方法は、MKNetworkEngine の新しいインスタンスを作成することです (MKNetworkEngine を変更せずに)。Hostname プロパティは MKNetworkEngine によって使用され、到達可能性の変化とフリーズ/復元操作を監視します。MKNetworkEngine の単一インスタンスの実行時にホスト名を変更する場合 (たとえば、ホスト名プロパティを公開することによって)、この機能はすべての状況でうまく機能しません。MKNetworkEngine.m の freezeOperations (ネットワークを失ったときに呼び出される) メソッドを見てください。操作 URL に現在のホスト名が含まれているかどうかをチェックします。ホスト名を変更し、操作が別のホスト用に作成された場合、操作はアーカイブされず、後でネットワークが復旧したときに復元されません。

于 2014-02-03T15:50:57.633 に答える