Mono for android 访问Webservice和WebApi以及获取和解析JSON
先看效果,注意:(1)这里由于我的模拟器不支持中文输入,所以,对于这张效果图,我是直接在代码中写死了我的查询城市,在下面的代码中我是没有把要查询的城市写死的。
(2)读者要想成功使用本示例的所有代码的话(就是一成不改,这也太懒了哈!),需要读者自己申请一个key,然后放入我的代码中,下面的代码注释中我也有说道,请认真观看。
(3)改代码本人亲测可行,有图有真相。
(4)本文全部原创,热烈欢迎广大网友分享本文,但请标明出处。也欢迎大家和我积极交流相关知识。

布局如大家所见,很简陋,我就不贴代码了哈。
活动代码:
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Org;
using System.Net;
using System.IO;
using System.Text;
using Newtonsoft.Json;
using System.Text.RegularExpressions;
namespace App1
{
[Activity(Label = "App1", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
private TextView tv; //一个标签,用来显示查询成功后的JSON数据
EditText city; //一个输入框,用来接收要传入的参数,我这里用来传递要查询城市的名字
string queryCity = ""; //记录输入框的内容
string Url = "http://apis.haoservice.com/weather";//请求的service地址
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button>(Resource.Id.MyButton);
city = FindViewById<EditText>(Resource.Id.city);
tv = FindViewById<TextView>(Resource.Id.resultText);
button.Click +=button_Click;
}
void button_Click(object sender, EventArgs e)
{
if(string.IsNullOrEmpty(city.Text))
{
Toast.MakeText(this,"请输入城市名称!",ToastLength.Long).Show();
return;
}
queryCity = city.Text;
string Body = "cityname=" +System.Web.HttpUtility.UrlEncode(queryCity) + "&key=";//特别注意,这里需要读者自己去申请一个key然后填入
byte[] data = Encoding.ASCII.GetBytes(Body); //转换为字节数组
try
{
// Create the web request
HttpWebRequest request = WebRequest.Create(Url) as HttpWebRequest;
request.ContentLength = data.Length;
// Set type to POST
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
// Write the parameters
var stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
request.BeginGetResponse(new AsyncCallback(ProcessRestJSONHttpResponse), request);
}
catch (WebException we)
{
tv.Text = we.Message;
Android.Util.Log.Error("http request", "Exception: " + we.Message);
}
catch (System.Exception sysExc)
{
tv.Text = sysExc.Message;
Android.Util.Log.Error("http request", "Exception: " + sysExc.Message);
}
}
void ProcessRestJSONHttpResponse(IAsyncResult iar)
{
try
{
HttpWebRequest request = (HttpWebRequest)iar.AsyncState;
HttpWebResponse response;
response = (HttpWebResponse)request.EndGetResponse(iar);
System.IO.StreamReader strm = new System.IO.StreamReader(
response.GetResponseStream());
string result = strm.ReadToEnd();
this.RunOnUiThread(delegate
{
tv.Text = result;
});
/* 这里提供2种去掉字符串里面空格的方法,JSON数据是不允许里面有特殊字符的否则解析会出错
**/
string test1 = result.Replace(" ", ""); //去掉空格
string test = Regex.Replace(result, @"\s", "");//去掉空格回车等特殊字符 这里test1和test内容是一样的,我只是列举2种不同的方法
/* 第一种解析JSON方法:反序列化 使用JSON.NET 的索引器访问 官网地址:http://www.newtonsoft.com/json
相对应的就是序列化:string json = JsonConvert.SerializeObject(team);其中team就是JSON对象
*/
var results = JsonConvert.DeserializeObject(test1);//反序列化,可以通过索引器来访问,到此就完成了json的解析工作
//就下来就可以用results的索引方式访问任何你想要的JSON中的数据内容了。
}
catch (System.Exception sysExc)
{
Android.Util.Log.Error("http response", "Exception: " + sysExc.Message);
this.RunOnUiThread(() => tv.Text = "Exception: " + sysExc.Message);
}
}
}
}
Mono for android 访问Webservice和WebApi以及获取和解析JSON的更多相关文章
- 如何解析android访问webservice返回的SoapObject数据(可用)
怎么解析android访问webservice返回的SoapObject数据 本帖最后由 kkDragon123 于 2013-03-26 15:50:07 编辑 我的数据如下:mingdanResp ...
- Android访问WebService的两种方法
首先解释一下WebService:WebService是一种基于SOAP协议的远程调用标准.通过WebService可以将不同操作系统平台,不同语言.不同技术整合到一起.详细见:http://baik ...
- (转)Android访问webservice
纠正网上乱传的android调用Webservice方法. 1.写作背景: 笔者想实现android调用webservice,可是网上全是不管对与错乱转载的文章,结果不但不能解决问题,只会让人心烦 ...
- Xamarin.Android下获取与解析JSON
一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选择添加引用,引用System.Json.dll 二.同步请求 既然是跨平台,我们自然不能按照java下的 ...
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
- android访问webservice
// nameSpace 命名空间,methodName:方法名字:maps:参数集合:webserviceUrl:访问的webservice的网址:比如:http://17.18.199.100:8 ...
- Xamarin.Android 入门实例(1)之获取与解析JSON
1.Main.axml 视图界面 2.视图代码 <?xml version="1.0" encoding="utf-8"?> <LinearL ...
- WebService返回数据前台获取并处理JSON的相关问题
起因: 记录这个问题的起因是一次解答网友的问题,当初自己初次接触webservice时也遇到过,但在写答案时,并没有很深的印象,只是知道webservice在后台返回值的时候,那里是有个坑的.网友问的 ...
- ajax的访问 WebService 的方法
如果想用ajax进行访问 首先在web.config里进行设置 添加在 <webServices> <protocols> <add name= "HttpPo ...
随机推荐
- 第四十一章、PyQt显示部件:TextBrowser、CalendarWidget、LCDNumber、ProgressBar、Label、HorizontalLine和VerticalLine简介
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 在Designer中,显示部件有Labe ...
- Linux 服务分类
一,服务分类 1,服务简介与分类 1,服务的分类 启动与自启动 1,服务启动:就是在当前系统中让服务运行,并提供功能 2,服务自启动:自启动是指让服务在系统开机或重启动之后,随着系统的启动而自动启动的 ...
- kickstart 谷歌 D 2020 年 7 月 12 日 13: 00 - 16: 00
https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ff08/0000000000386d5c (kick st ...
- MySQL存储引擎:MyISAM和InnoDB的区别
MyISAM和InnoDB的区别 定义 InnoDB:MySQL默认的事务型引擎,也是最重要和使用最广泛的存储引擎.它被设计成为大量的短期事务,短期事务大部分情况下是正常提交的,很少被回滚.InnoD ...
- CSP-S 2020 题解
赛后我重拳出击,赛场上我却爆零.哎. 题解本人口胡.有错请各位大佬们指出. A. 儒略日 这题是大型模拟题. 介绍两种写法:一种代码量致死(赛 场 自 闭),一种是非常好写的. 写法 1 我在赛场的思 ...
- 题解-CF1396C Monster Invaders
题面 CF1396C Monster Invaders 有 \(n\) 层关卡,每层有 \(a_i\) 个小怪(\(1\) 血)和 \(1\) 个老怪(\(2\) 血).有三种武器:\(1\) 武器每 ...
- 2020高考倒计时!全屏向下滑动设计HTML源码
全屏竖向滑动效果,自适应,多终端 全国高考倒计时,音乐自动播放. 背景图片:img目录下替换bg.jpg 背景音乐:audio目录下替换song.mp3 原本按照正常情况下每年的6月7.8日就是全国 ...
- Windows版 charles安装证书抓包网页HTTPS
1.在Charles官网https://www.charlesproxy.com/download/下载,我这边下载的是免费体验版的. 2.安装好以后打开,配置Charles证书:选择 help--S ...
- idea的下载与安装
1.下载idea.到idea的官网选择你需要下载的,你最喜欢的版本https://www.jetbrains.com/idea/download/ 2.下载jdk.进入Oracle官网,鼠标指在Dow ...
- DSL查询基础—关键字
1.query查询语句 { "query" : { "match" : { "last_name" : "Smith" ...