Silverlightで作成しているWebクライアントがあります。 GET/POSTリクエストとJSONを使用してサーバー上のWebサービスと通信できるようにしようとしています。 GETリクエストは正常に動作し、Silverlightの終わりでJSONを解析できます。しかし、POST要求は動作しないようです。サーバーはPOST要求があることを読み取りますが、POST配列は空です。JSONが投稿したデータがサーバーに届かない
Iveは2つのコードでPOSTリクエストを送信しようとしましたが、どちらも同じ応答を返しています - 空の配列。私が試し
最初のシルバーコードは以下のとおりであった:私が試し
public MainPage()
{
InitializeComponent();
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri("http://www.dipzo.com/game/services.php"));
request.Method = "POST";
request.ContentType = "application/json";
request.BeginGetRequestStream(new AsyncCallback(OnGetRequestStreamCompleted), request);
}
private void OnGetRequestStreamCompleted(IAsyncResult ar)
{
HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
using (StreamWriter writer = new StreamWriter(request.EndGetRequestStream(ar)))
{
writer.Write("name=david");
}
request.BeginGetResponse(new AsyncCallback(OnGetResponseCompleted), request);
}
private void OnGetResponseCompleted(IAsyncResult ar)
{
//this.GetResponseCoimpleted.Visibility = Visibility.Visible;
// Complete the Flickr request and marshal to the UI thread
using (HttpWebResponse response = (HttpWebResponse)((HttpWebRequest)ar.AsyncState).EndGetResponse(ar))
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string results = reader.ReadToEnd();
}
}
}
第二部分は以下のとおりであった:
private void WebClient_Click(object sender, RoutedEventArgs e)
{
Test t1 = new Test() { Name = "Civics", Marks = 100 };
DataContractJsonSerializer jsondata = new DataContractJsonSerializer(typeof(Test));
MemoryStream mem = new MemoryStream();
jsondata.WriteObject(mem, t1);
string josnserdata = Encoding.UTF8.GetString(mem.ToArray(), 0, (int)mem.Length);
WebClient cnt = new WebClient();
cnt.UploadStringCompleted += new UploadStringCompletedEventHandler(cnt_UploadStringCompleted);
cnt.Headers["Content-type"] = "application/json";
cnt.Encoding = Encoding.UTF8;
cnt.UploadStringAsync(new Uri("http://www.dipzo.com/game/services.php"), "POST", josnserdata);
}
void cnt_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
var x = e;
}
サービスはPHPであり、本質的に消費するサーバー上のコード: var_dump($ _ POST)
これは、ポスト配列に入ってくるものを出力するはずです。私は単純なPHPクライアントでそれをテストしています。ただ銀色で働くことはできません。私はちょうど空の配列を取得しています。