[Windows Phone 8开发]使用HttpWebRequest和HttpWebResponse向服务器发送Json数据(POST方法)

          public string szJson = "";
          byte[] json;
          UploadClass up = new UploadClass();

          public ValidatePage()
          {
              InitializeComponent();
          }

         private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
         {
             //我做了一个实现上传某些关键的Json数据,返回服务器Appid的功能,类似新浪微博获取AccessToken,不过微博SDK已经封装好了上传功能,比我这个简单许多。
             GetAppid();
         }

         void GetAppid()
         {
             up.device = "Luma1020";
             up.devid = "abcdefghijklmn123456";
             up.os = "8.0";
             up.appid = "987654321asdfghjkl";

             DataContractJsonSerializer dc = new DataContractJsonSerializer(typeof(UploadClass)); 

             //序列化要发送的信息
             using (MemoryStream ms = new MemoryStream())
             {
                 dc.WriteObject(ms, up);  //报错的原因是UploadClass的类名没有写public
                 json = ms.ToArray();
                 ms.Close(); //一定要关闭流
                 szJson = Encoding.UTF8.GetString(json, 0, json.Length);  //服务器要求用UTF8,就在代码中转换成UTF8,要求用别的就转换成相应的格式。
             }

             //从这一步开始,准备向服务器发送数据。
             HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.xxxx.com/Api/xxxxx");
             request.Method = "POST";
             request.ContentType = "application/json";
             request.ContentLength = json.Length;

             IAsyncResult result = (IAsyncResult)request.BeginGetRequestStream(GetRequestCallback, request);
         }

         private void GetRequestCallback(IAsyncResult asyncResult)
         {
             HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
             using (Stream sm = request.EndGetRequestStream(asyncResult))
             {
                 sm.Write(json, 0, json.Length);
             }
             request.BeginGetResponse(GetResponseCallback, request);
         }

         void GetResponseCallback(IAsyncResult result)
         {
             Stream stream = null;
             UploadClass uc = null;  //new 一个供返回Json数据的实例

             HttpWebRequest req = (HttpWebRequest)result.AsyncState;
             WebResponse webresponse = req.EndGetResponse(result);
             stream = webresponse.GetResponseStream();
             using (StreamReader reader = new StreamReader(stream))
             {
                 string contents = reader.ReadToEnd();

                 uc = new UploadClass();

                 using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(contents.ToString())))
                 {
                     DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(UploadClass));
                     uc = (UploadClass)ds.ReadObject(ms);
                 }
             }

             //这种回调函数中不能直接在函数体里写UI的语句,需要用Dispatcher去通知UI改变。
             if (uc.code == "0")
             {
                 Dispatcher.BeginInvoke
                     (() =>
                     {
                        //这些都是前台UI,下面都是例子:
                         IDTextBlock.Text = "AppId:  " + up.id;
                         DeviceTextBlock.Text = "Device:  " + up.device;
                     }
                     );
             }

             else
             {
                 Dispatcher.BeginInvoke(() =>
                 {
                  //和上面一样,根据自己的UI自行设置。
                 });
             }
         }

我在做这个模块时也参考了许多网上的例子,不过和大多数人的通病一样,就是他能正常运行,我就不能运行,因此我也排除了各种BUG,比如上面注释里写道的一些细节。

在标题里我把几个关键词也写上了,便于朋友们搜索,希望这篇博客能帮助你们!

[Windows Phone 8开发]使用HttpWebRequest和HttpWebResponse向服务器发送Json数据(POST方法)

时间: 2024-11-08 18:12:00

[Windows Phone 8开发]使用HttpWebRequest和HttpWebResponse向服务器发送Json数据(POST方法)的相关文章

iOS开发网络篇—发送json数据给服务器以及多值参数

iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 代码示例: 1 #import "YYViewController.h" 2 3 @interface YYViewController () 4 5 @end 6 7 @implementation YYViewController 8 9 - (void)viewDidLoad 10

C#使用HttpWebRequest的POST方法发送大量数据的方法

使用 HttpWebRequest 向网站提交数据HttpWebRequest 是 .net 基类库中的一个类,在命名空间 System.Net 下面,用来使用户通过 HTTP 协议和服务器交互. HttpWebRequest 对 HTTP 协议进行了完整的封装,对 HTTP 协议中的 Header, Content, Cookie 都做了属性和方法的支持,很容易就能编写出一个模拟浏览器自动登录的程序. 程序使用 HTTP 协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和

iOS开发 -- 发送JSON数据给服务器

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 1.URL NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/order"]; // 2.请求 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 3.请求方法 re

【转】iOS开发网络篇—发送json数据给服务器以及多值参数

原文: http://www.cnblogs.com/wendingding/p/3950132.html 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 代码示例: 1 #import "YYViewController.h" 2 3 @interface YYViewController () 4 5 @end 6 7 @implementation YYViewController 8

Vue-Router路由Vue-CLI脚手架和模块化开发 之 在单文件组件项目中定义数据、方法和组件之间的相互引用

定义数据 根据上一篇博文配置项目的结构的基础上继续进行优化: 在app.vue中的导出模块/组件部分设置其属性: export default{//导出模块/组件 data(){ return{ name:'perfect', count:0 } }, 在一个template标签中进行调用: <template> <div> <h2> 欢迎来到perfect*的博客园!!!</h2> <h3>{{name}}</h3> </te

C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse

上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient最大的不同之处在于HttpWebRequest更灵活,也更强大,比如,HttpWebRequest支持Cookie,而WebClient就不支持,因此,如果要登录某个网站才能进行某些操作的时候,HttpWebResponse就派上用场了. 补充: WebClient是可以操作Cookie的,因为Cookie本质

ASP.NET HttpWebRequest和HttpWebResponse

HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性. 模拟艺龙旅游网登录 想模拟登录,首先整理一下流程 1.通过360浏览器(IE,火狐等等)F12开发人员工具抓到相关数据 2.获取验证码(拿到cookie),登录时也需要使用 3.登录 ------------------------------- F12调出开发人员工具,输入用户名,密码登录,看我们抓到了什么信息. (此处为360浏览器) Request URL:这个

HttpWebRequest和HttpWebResponse

HttpWebRequest HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持,也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持 不要使用 HttpWebRequest 构造函数.使用 WebRequest.Create 方法初始化新的 HttpWebRequest 对象 HttpWebResponse 决不要直接创建 HttpWebResponse 类的实例.而应当使用通过调用 HttpWebRequest.GetResponse 所

利用HttpWebRequest和HttpWebResponse获取Cookie

之前看过某个同学的一篇有关与使用JSoup解析学校图书馆的文章,仔细一看,发现竟然是同校!!既然对方用的是java,那么我也就来个C#好了,虽然我的入门语言是java. C#没有JSoup这样方便的东西,我也没有仔细去找,因为只要利用正则表达式,同样可以很好的解析网页内容而不需要其他帮助.现在做前端的程序员,如果正则表达式不熟悉,反而去依赖第三方的话,感觉很可惜! 这是我们学校图书馆的登录界面的body: <body onload="bodyload()"> <for