2

以下のようにWeb APIアクションを作成しました

[HttpPost]
public void Load(string siteName, string providerName, UserDetails userDetails)
{
// implementation
}

このために登録したルートは次のとおりです(正しいかどうかわかりませんか?):

 config.Routes.MapHttpRoute(
             name: "loadUserDetails",
             routeTemplate: "sites/{siteName}/User/Load/{providerName}/{userDetailsList}",
             defaults: new
             {
                 controller = "User",
                 action = "Load",
                 providerName = UrlParameter.Optional
             });

providerName パラメーターはオプションである必要があり、私は Xml シリアル化を使用しています。

アクションは、次の URL サンプルに応答する必要があります。

http://www.domain.com/sites/site1/user/load/provider1/[some user details in the post]
or
http://www.domain.com/sites/site1/user/load/[some user details in the post]

サービスをテストできるように、このアクションへの post 呼び出しを行うにはどうすればよいですか?

4

3 に答える 3

3

From: post を使用した HTTP リクエスト

HttpWebRequest request =
    (HttpWebRequest)WebRequest.Create(@"http:\\domain.com\page.asp");

ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "username=user";
postData += "&password=pass";
byte[] data = encoding.GetBytes(postData);

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

using (Stream stream = request.GetRequestStream())
{
    stream.Write(data,0,data.Length);
}

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
于 2013-04-18T15:27:06.187 に答える
0

あなたの質問がアクションをテストする方法である場合は、Fidlerを使用できます。

http://www.mehdi-khalili.com/fiddler-in-action/part-2を参照してください。

于 2013-04-18T15:26:00.570 に答える