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 ...
随机推荐
- 在django中使用原生sql语句
raw # row方法:(掺杂着原生sql和orm来执行的操作) res = CookBook.objects.raw('select id as nid from epos_cookbook whe ...
- 第3.6节 Python字符串基础知识
一. 引言 前面第二章已经接单介绍了字符串,本来计划讲完列表解析和字典解析再来精讲字符串的内容,但发现要讲列表解析和字典解析需要介绍迭代器和生成器,这个概念比较复杂,老猿还需要复习和验证一下才能完全掌 ...
- Github 美化设置个人主页
起因是发现自己follow的大师傅个人主页跟普通的不太一样: 猜测应该是Github啥时候出现的新功能,查了一下,发现可以通过创建同名仓库来实现个人主页的美化设置 首先在 GitHub 上建立一个与自 ...
- [BJDCTF 2nd]假猪套天下第一 && [BJDCTF2020]Easy MD5
[BJDCTF 2nd]假猪套天下第一 假猪套是一个梗吗? 进入题目,是一个登录界面,输入admin的话会返回错误,登录不成功,其余用户可以正常登陆 以为是注入,简单测试了一下没有什么效果 抓包查看信 ...
- kaggle——Bag of Words Meets Bags of Popcorn(IMDB电影评论情感分类实践)
kaggle链接:https://www.kaggle.com/c/word2vec-nlp-tutorial/overview 简介:给出 50,000 IMDB movie reviews,进行0 ...
- centos7.5以上poenssl和openssh升级
2020年12月09日,360CERT监测发现 openssl 发布了 openssl 拒绝服务漏洞 的风险通告,该漏洞编号为 CVE-2020-1971 ,漏洞等级:高危 ,漏洞评分:7 ...
- 题解-MtOI2019 幽灵乐团
题面 MtOI2019 幽灵乐团 给定 \(p\),\(Cnt\) 组测试数据,每次给 \(a,b,c\),求 \[\prod_{i=1}^a\prod_{j=1}^b\prod_{k=1}^c\le ...
- redis学习之——主从复制(replication)
准备:拥有linux环境,并安装redis mater:主机,进行写操作 slave:从机,进行读操作 一.配置 继续前边的学习.我们是拷贝redis.conf,文件到了/root /redis 下. ...
- 别再说你不懂什么是API了
API 全称 Application Programming Interface, 即应用程序编程接口. 看到这里,急性子的小白同学马上就憋不住了:这不管是英文还是中文我每个字都懂啊,只是凑一块就不知 ...
- Day7 python高级特性-- 切片 Slice
先举一个例子,取list或tuple中的某几个元素: 1.取 ['a','b','c','d','e','f'] 第1.2.5.6个元素: >>> a = [' ...