添付データを取得するために GET を実行する REST Web サービスを呼び出しています。受け取るパラメーターは、SRNumber、External_Id、attachmentId、およびattachmentNameです。ブラウザーで機能する特定の呼び出し URL がありますが、コードからサービスを呼び出すと機能しません。特に私がテストしているものには、次のパラメーターがあります。
- SR 番号= 1000
- ExternalId = USERID7/27/2012 10:43:00 AM
- 添付ファイルID = 1-2H1USPQ
- attachmentName = ここにファイル名が入ります
URL エンコードされたパラメーターでフォーマットされた URL は次のとおりです。
http://baseurl/service/CHD/Service_Record_Attachment_Query/SRNumber/1000/External_Id/USERID7%2F27%2F2012%2010%3A43%3A00%20AM/attachmentId/1-2H1USPQ/attachmentName/File%20name%20goes%20here/
ただし、コードを介して GET を実行しようとすると、エラーが発生します。Web サービスは、URL でエンコードされた「/」文字を URL の区切り文字であるかのように読み取っているようです (コードをステップ実行して、文字列が作成されたときに、External_Id の「/」が URL エンコードされていることを確認しました)。 .)
URL文字列を作成するために使用しているコードは次のとおりです。
requestURL = ConfigurationManager.AppSettings["Server"] +
ConfigurationManager.AppSettings["Service"] +
"Service_Record_Attachment_Query/SRNumber/" +
System.Uri.EscapeDataString(SRNumber) + "/External_Id/" +
(ExternalID.Equals(null) ? "" : System.Uri.EscapeDataString(ExternalID)) +
"/attachmentId/" + System.Uri.EscapeDataString(AttachmentID) +
"/attachmentName/" + System.Uri.EscapeDataString(AttachmentName) + "/";
リクエスト文字列を作成したら、それを使用して HTTPWebRequest を作成します。
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(requestURL);
次に、「USERID7」のみを検索し、残りの添付ファイル名を除外しているため、添付ファイルが存在しないというエラーが返されます。
「/」文字が区切り文字として解釈される可能性があるコードで何か間違ったことをしていますか? ブラウザーに呼び出し URL を入力すると成功の応答が返される理由がわかりませんが、コードを介して同じ呼び出し URL を使用するとエラーが返されます。