Silverlight에서 만들고있는 웹 클라이언트가 있습니다. GET 및 POST 요청과 JSON을 통해 내 서버에서 내 웹 서비스와 통신하도록하기 위해 노력하고 있습니다. GET 요청은 정상적으로 작동하며 Silverlight 끝에서 JSON을 구문 분석 할 수 있습니다. 그러나 POST 요청은 작동하지 않습니다. 서버는 POST 요청이 있음을 읽지 만 POST 배열은 비어 있습니다.JSON Silverlight에서 게시 한 데이터가 서버에 도달하지 않습니다.
Ive는 두 개의 코드를 사용하여 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 클라이언트로 테스트 해봤는데 작동합니다. 그냥 실버 라이트에서 작동하도록 할 수 없습니다. 실버 라이트에서는 빈 배열이 계속 나타납니다.