-2

こんにちは、WCF サービス、サービス コントラクト、およびデータ コントラクトを作成しました。以下に貼り付けます。

[ServiceContract]
public interface IRestWithXML
{
    [OperationContract]
    [WebInvoke(Method = "Post", UriTemplate = "DoWork", RequestFormat=                WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    string DoWork(Test objtest);

    [OperationContract]
    [WebInvoke(Method = "Post", UriTemplate = "Method?test={strtest}", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    string Method(Test objtest,string strtest);

}          

[DataContract]
public class Test
{
    [DataMember]
    public string id { get; set; }
}

これらのサービスを .NET でテストするにはどうすればよいですか。メソッド "Post" を "GET" に変更することで、メソッドをテストできます。

しかし、「Post」を使用してこれらのサービスをテストする必要があります。ガイドしてください

前もって感謝します !!!!

4

3 に答える 3

5
于 2013-03-08T11:36:18.733 に答える
0

メソッドを「POST」に設定するだけです。 http://msdn.microsoft.com/en-US/library/system.net.httpwebrequest.method.aspx

var myWebRequest = new HTTPWebRequest();
myWebRequest.Method = "POST"
于 2013-03-08T11:12:32.853 に答える
0

POST リクエストをテストするには、コードをいくつか変更する必要があります。

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "DoWork", RequestFormat=WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string DoWork(Stream objtest);

パラメータを Stream に設定します。

DoWork(Stream objtest) の実装では:

public string DoWork(Stream objtest)
{
     StreamReader sr = new StreamReader(stream);
     string s = sr.ReadToEnd();
     sr.Dispose();
     NameValueCollection collection = System.Web.HttpUtility.ParseQueryString(s);
     return collection.ToString();
}

リクエストをテストするには、REST クライアント (Fiddler ?) を使用する必要があり、本文のコンテンツがコレクションに含まれます。

C# でリクエストを作成する場合:

string body ="&key1=value1&key2=value2";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";

using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
    writer.Write(body);
}

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
于 2013-03-08T11:20:59.083 に答える