次のコードを使用して、Web サーバーから json 文字列を取得しています。
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;