大佬教程收集整理的这篇文章主要介绍了windows-phone-7 – WP7 – 带图像的POST表单,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class PostSubmitter { public String url { get; set; } public Dictionary<String,String> parameters { get; set; } public PostSubmitter() { } public void Submit() { // Prepare web request... httpWebrequest myrequest = (httpWebrequest)Webrequest.Create(url); myrequest.Method = "POST"; myrequest.ContentType = "application/x-www-form-urlencoded"; myrequest.beginGetrequestStream(new AsyncCallBACk(GetrequestStreamCallBACk),myrequest); } private void GetrequestStreamCallBACk(IAsyncResult asynchronousResult) { httpWebrequest request = (httpWebrequest)asynchronousResult.AsyncState; System.IO.Stream postStream = request.EndGetrequestStream(asynchronousResult); // Prepare Parameters String String paramete@L_673_9@tring = ""; foreach (KeyValuePair<String,String> parameter in parameters) { paramete@L_673_9@tring = paramete@L_673_9@tring + (paramete@L_673_9@tring != "" ? "&" : "") + String.Format("{0}={1}",parameter.Key,parameter.value); } byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(paramete@L_673_9@tring); // Write to the request stream. postStream.Write(byteArray,paramete@L_673_9@tring.Length); postStream.Close(); // Start the asynchronous operation to get the response request.beginGetResponse(new AsyncCallBACk(GetResponseCallBACk),request); } private void GetResponseCallBACk(IAsyncResult asynchronousResult) { httpWebrequest request = (httpWebrequest)asynchronousResult.AsyncState; httpWebResponse response = (httpWebResponsE)request.EndGetResponse(asynchronousResult); Stream streamResponse = response.GetResponseStream(); StreamReader streamRead = new StreamReader(streamResponsE); String responseString = streamRead.ReadToEnd(); // Close the stream object streamResponse.Close(); streamRead.Close(); // Release the httpWebResponse response.Close(); //Action<String> act = new Action<String>(DisplayResponsE); //this.Dispatcher.beginInvoke(act,responseString); }
我用这种方式使用这个类:
Dictionary<String,String> data = new Dictionary<String,String>() { {"nom",nom.Text},{"cognoms",cognoms.Text},{"email",email.Text},{"telefon",telefon.Text} }; PostSubmitter post = new PostSubmitter() { url = "http://example.com/parserscript.PHP",parameters = data }; post.Submit();
非常感谢你!
public class PostSubmitter { public String url { get; set; } public Dictionary<String,object> parameters { get; set; } String boundary = "----------" + datetiR_776_11845@e.Now.Ticks.ToString(); public PostSubmitter() { } public void Submit() { // Prepare web request... httpWebrequest myrequest = (httpWebrequest)Webrequest.Create(new Uri(url)); myrequest.Method = "POST"; myrequest.ContentType = String.Format("multipart/form-data; boundary={0}",boundary); myrequest.beginGetrequestStream(new AsyncCallBACk(GetrequestStreamCallBACk),myrequest); } private void GetrequestStreamCallBACk(IAsyncResult asynchronousResult) { httpWebrequest request = (httpWebrequest)asynchronousResult.AsyncState; Stream postStream = request.EndGetrequestStream(asynchronousResult); writeMultipartObject(postStream,parameters); postStream.Close(); request.beginGetResponse(new AsyncCallBACk(GetResponseCallBACk),request); } private void GetResponseCallBACk(IAsyncResult asynchronousResult) { httpWebrequest request = (httpWebrequest)asynchronousResult.AsyncState; httpWebResponse response = (httpWebResponsE)request.EndGetResponse(asynchronousResult); Stream streamResponse = response.GetResponseStream(); StreamReader streamRead = new StreamReader(streamResponsE); streamResponse.Close(); streamRead.Close(); // Release the httpWebResponse response.Close(); } public void writeMultipartObject(Stream stream,object data) { StreamWriter writer = new StreamWriter(stream); if (data != null) { foreach (var entry in data as Dictionary<String,object>) { WriteEntry(writer,entry.Key,entry.value); } } writer.Write("--"); writer.Write(boundary); writer.WriteLine("--"); writer.Flush(); } private void WriteEntry(StreamWriter writer,String key,object value) { if (value != null) { writer.Write("--"); writer.WriteLine(boundary); if (value is byte[]) { byte[] ba = value as byte[]; writer.WriteLine(@"Content-Disposition: form-data; name=""{0}""; filename=""{1}""",key,"sentPhoto.jpg"); writer.WriteLine(@"Content-Type: application/octet-stream"); //writer.WriteLine(@"Content-Type: image / jpeg"); writer.WriteLine(@"Content-Length: " + ba.Length); writer.WriteLine(); writer.Flush(); Stream output = writer.baseStream; output.Write(ba,ba.Length); output.Flush(); writer.WriteLine(); } else { writer.WriteLine(@"Content-Disposition: form-data; name=""{0}""",key); writer.WriteLine(); writer.WriteLine(value.ToString()); } } } }
要将图像从相机转换为字节数组,我已经使用了以下内容:
private void photochooserTask_Completed(object sender,PhotoResult E) { try { BitmapImage image = new BitmapImage(); image.Set@R_489_9016@e(e.ChosenPhoto); foto.source = image; using (MemoryStream ms = new MemoryStream()) { WriteableBitmap btmMap = new WriteableBitmap(imagE); // write an imagE into the stream Extensions.SaveJpeg(btmMap,ms,image.PixelWidth,image.PixelHeight,100); byteArray = ms.ToArray(); } } catch (ArgumentNullException) { /* Nothing */ } }
我这样使用这个类:
Dictionary<String,object> data = new Dictionary<String,object>() { {"nom",telefon.Text},{"comentari",comentari.Text},{"foto",byteArray},}; PostSubmitter post = new PostSubmitter() { url = "http://example.com/parserscript.PHP",parameters = data}; post.Submit();
我不知道这是将图像从手机发送到服务器的最佳方式,但是我找不到任何东西,所以我自己上课只是读这个,而且这花了我好几天.如果有人想改进代码或写任何评论将受到欢迎.
以上是大佬教程为你收集整理的windows-phone-7 – WP7 – 带图像的POST表单全部内容,希望文章能够帮你解决windows-phone-7 – WP7 – 带图像的POST表单所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。