2012-06-29 22 views
0

我用下面的代码来从我的网络服务器JSON字符串:WebClient.OpenReadAsync - 如何发布变量,而不是使用查询字符串

var webClient = new WebClient(); 

webClient.OpenReadCompleted += OnOpenReadCompleted; 

webClient.OpenReadAsync(new Uri("https://myurl.com/request.cgi?user=" + user + "&pass=" + pass + "&junk=" + DateTime.Now, UriKind.Absolute)); 

... 

private void OnOpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{ 
// response processed here 
} 

我打算使用的变量进行加密,但想能够将变量发布到服务器,而不是将它们包含在查询字符串中。我将如何实现这一目标?

谢谢 - 斯图

编辑:是否更改了代码如下:

var webClient = new WebClient(); 

        webClient.UploadStringCompleted += OnOpenReadCompleted; 
        webClient.Headers["Content-Type"] = "application/x-www-form-urlencoded"; 
        webClient.Encoding = Encoding.UTF8; 


        webClient.UploadStringAsync(new Uri("https://myurl.com/request.cgi"), "POST", "user=" + user + "&pass=" + pass + "&junk=" + DateTime.Now, UriKind.Absolute); 

... 

private void OnOpenReadCompleted(object sender, UploadStringCompletedEventArgs e) 
    { 
    // response processed here 
    } 

为响应处理的一部分,我检查isolatedstorage已保存的文件,如果存在则删除它,并将新的回复保存到文件中。

然而,由于使其上面的代码改变现在不会让我删除现有的文件:

private void OnOpenReadCompleted(object sender, UploadStringCompletedEventArgs e) 
    { 
     StreamReader reader = new StreamReader(e.Result); 
     string myresult = reader.ReadToEnd(); 
     reader.Close(); 
     reader.Dispose(); 
     IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication(); 
       if (store.FileExists("json.txt")) 
        { 
         store.DeleteFile("json.txt"); // this errors with System.MethodAccessException was unhandled 
     // Message=Attempt to access the method failed: System.IO.StreamReader..ctor(System.String) 
        } 
     ... 
    } 

不明白为什么代码变化影响呢?

编辑:

通过改变固定:

StreamReader reader = new StreamReader(e.Result); 
string myresult = reader.ReadToEnd(); 
reader.Close(); 
reader.Dispose(); 

string myresult = (string)e.Result; 

回答

1

使用上传串发布数据:webClient.UploadStringAsync(URI, “POST”,身体); 你只需要配置'身体'数据你的服务器想要看到它。

+0

感谢乔恩,改变了上面我的问题所示的代码,但它现在抛出一个错误,从孤立存储删除 –

+0

当您尝试访问Windows Phone上的不受支持的方法时,您通常会得到该异常。事件处理程序中必须有其他事情正在进行。 – Jon

+1

是在请求删除文件之前是以下内容:'StreamReader reader = new StreamReader(e.Result); string myresult = reader.ReadToEnd(); reader.Close(); reader.Dispose();' 当初始请求是OpenReadAsync时,DeleteFile与此代码一起工作正常,但当UploadStringAsync –

相关问题