2010-03-31 95 views
0

首先,我编写了一个简单的php页面,它从POST参数中提取一些变量,例如查询和验证字符串,并将结果返回为xml 。我打算使用Silverlight应用程序中的WebClient类来调用此页面。我使用POST是因为我们使用任何有效的sql语句查询数据库,而不仅仅是选择语句。 WebClient类使用UploadDataAsync方法发布到http服务器,但它要求发布参数作为NameValueCollection传递。 Silverlight运行时中缺少此类。我该如何继续?如何在Silverlight应用程序的WebClient类中设置发布参数

回答

1

使用WebRequest API而不是WebClient API。

var request = WebRequest.Create(requestUriString); 

request.Method = "POST"; 

request.BeginGetRequestStream() 
+0

这是为了比WebClient的要复杂得多(http://msdn.microsoft.com/en-us/library/system.net.webrequest.begingetresponse(VS。 71)的.aspx)。 – cmaduro 2010-04-02 04:09:02

+0

其实我的意思是标题。我知道设置方法很热,但我如何设置标题? – cmaduro 2010-04-05 21:47:19

1
 WebClient webClient = new WebClient(); 
     webClient.Headers["content-type"] = "application/x-www-form-urlencoded"; 
     webClient.Encoding = Encoding.UTF8; 
     webClient.UploadStringCompleted += new UploadStringCompletedEventHandler(webClient_UploadStringCompleted); 
     webClient.UploadStringAsync(new Uri(courseListUrl, UriKind.Absolute), "POST", apend); 

哪里apend是你的字符串,你寄过来后法

它UploadCompleteMethod后:

void webClient_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e) 
{ 
     string k = e.Result; 
} 

如果要使用Web客户端的cookies内,你也可以这样做,但是您必须从WebClient创建一个Descendant类,如下所示:

public class CookieAwareWebClient : WebClient 
{ 
    private CookieContainer m_container = new CookieContainer(); 

    [System.Security.SecuritySafeCritical] 
    public CookieAwareWebClient() : base() { } 


    protected override WebRequest GetWebRequest(Uri address) 
    { 
     WebRequest request = base.GetWebRequest(address); 
     if (request is HttpWebRequest) 
     { 
      (request as HttpWebRequest).CookieContainer = m_container; 
     } 
     return request; 
    } 
} 

后,你只需要改变WebClient webClient = new WebClient();CookieAwareWebClient webClient = new CookieAwareWebClient();

相关问题