从WP7向WCF服务POST数据

use*_*662 5 c# wcf windows-phone-7

我正在研究WP7应用程序.如果发生错误,我想将错误记录回我的服务器.为了解决这个问题,我创建了一个WCF服务操作.我希望这个操作是RESTful,以便我以后可以在iPhone和Android应用程序中使用它.因为我正在向数据库写信息,所以我认为POST方法是最好的.出于这个原因,我正在使用WebInvoke.为此,我使用以下代码:

[OperationContract]
[WebInvoke(UriTemplate = "/LogError/{message}/{stackTrace}", ResponseFormat = WebMessageFormat.Json)]
public void LogError(string message, string stackTrace)
{
  // Write info to the database
}
Run Code Online (Sandbox Code Playgroud)

从我的WP7应用程序,我想通过WebClient调用此operaiton.我的问题是,我该怎么做?我不明白如何调用LogError操作并通过WebClient传递所需的数据.

谢谢您的帮助!

Den*_*sky 1

大致意思是:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://serveraddress/LogError/{message}/{stackTrace}");
Run Code Online (Sandbox Code Playgroud)

如果您想稍后发送其他信息,可以通过以下方式执行:

request.Method = "POST";
request.BeginGetRequestStream(new AsyncCallback(ExecuteAction), request);
Run Code Online (Sandbox Code Playgroud)

并有一个回调:

void ExecuteAction(IAsyncResult result)
{
    HttpWebRequest request = (HttpWebRequest)result.AsyncState;
    using (Stream s = request.EndGetRequestStream(result))
    {
        s.Write(data, 0, data.Length);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果服务有特定的字符串响应,您不妨将数据包含在 WebClient 中并使用DownloadStringAsync获取响应数据。