mono for android代码记录1 WebClient Post数据到Nopcommerce(post数据到MVC5)
WebClient Post数据到Nopcommerce(post数据到MVC5)
注意事项
1.把[ValidateAntiForgeryToken]注释掉,以后再处理CSRF攻击.现在学习先不理
2.post的数据,必须和MVC上面接收的参数字段进行对应,否则post不到函数,就报500错误.
本来想写详细,可是现在不懂写啥了,直接贴代码,不懂就留言问哦.
代码没重构,有空再重构漂亮点.将就看下吧.
using System;
using System.Collections.Specialized;
using System.Net;
using System.Text;
using Android.App;
using Android.OS;
using Android.Widget;
using Nop.DomainPCL.Models.Customer; namespace Nop.MonoAndroid.Controllers
{
[Activity(Label = "注册页")]
public class RegisterActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
if (Build.VERSION.SdkInt.GetHashCode() >= 11)//处理网络线程的异常
{
StrictMode.SetThreadPolicy(
new StrictMode.ThreadPolicy.Builder().DetectDiskReads()
.DetectDiskWrites()
.DetectNetwork()
.PenaltyLog()
.Build());
StrictMode.SetVmPolicy(
new StrictMode.VmPolicy.Builder().DetectLeakedSqlLiteObjects()
.DetectLeakedClosableObjects()
.PenaltyLog()
.PenaltyDeath()
.Build());
}
SetContentView(Resource.Layout.RegisterLayout); // Create your application here
var txtEmail = FindViewById<EditText>(Resource.Id.txtEmail);
var txtPass = FindViewById<EditText>(Resource.Id.txtPassword);
var txtRePass = FindViewById<EditText>(Resource.Id.txtConfirmPassword);
var txtFName = FindViewById<EditText>(Resource.Id.txtFirstName);
var txtLName = FindViewById<EditText>(Resource.Id.txtLastName); var btOk = FindViewById<Button>(Resource.Id.btnOK);
btOk.Click += delegate
{
var registInfo = new RegisterModel();
registInfo.Email = txtEmail.Text;
registInfo.Password = txtPass.Text;
registInfo.ConfirmPassword = txtRePass.Text;
registInfo.FirstName = txtFName.Text;
registInfo.LastName = txtLName.Text;
// System.Json.JsonObject postData = new System.Json.JsonObject()
// {
// {"Email",registInfo.Email},{"Password",registInfo.Password},{"ConfirmPassword",registInfo.ConfirmPassword},{"FirstName",registInfo.FirstName},{"LastName",registInfo.LastName}
//
// };
// postData.Add("returnUrl", "");
// postData.Add("captchaValid", "false");
// string postStr = postData.ToString();
const string url = "http://192.168.0.4:8002/register";
using (var client = new WebClient())
{
try
{
//PostToMvc1(client, url);
PostToMvc2(registInfo, url, client);
}
catch (WebException)
{
throw;
}
}
};
} private static void PostToMvc2(RegisterModel registInfo, string url, WebClient client)
{
var form = new NameValueCollection();
form.Add("Email", registInfo.Email);
form.Add("Password", registInfo.Password);
form.Add("ConfirmPassword", registInfo.Password);
form.Add("FirstName", registInfo.FirstName);
form.Add("LastName", registInfo.LastName);
form.Add("LastName", registInfo.LastName);
form.Add("returnUrl", "");
form.Add("captchaValid", "false");
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
//采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可
client.Headers.Add("ContentLength", form.ToString().Length.ToString());
client.Headers.Add("Accept-Language: zh-cn");
client.Headers.Add("Referer", "http://192.168.0.4:8002/register");
Byte[] responseData = client.UploadValues(url, "POST", form); //得到返回字符流
string srcString = Encoding.UTF8.GetString(responseData); //解码
} public void PostToMvc1(WebClient client, string url)
{
string postString =
"FirstName=stupro3&LastName=23fe&DateOfBirthDay=0&DateOfBirthMonth=0&DateOfBirthYear=0&Email=stupro6@qq.com&Company=&Newsletter=true&Newsletter=false&Password=123456&ConfirmPassword=123456®ister-button=%E6%B3%A8%E5%86%8C&returnUrl=null&captchaValid=false";
//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form里面每一个name都要加进来
byte[] postData = Encoding.UTF8.GetBytes(postString); //编码,尤其是汉字,事先要看下抓取网页的编码方式
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
//采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可
client.Headers.Add("ContentLength", postData.Length.ToString());
client.Headers.Add("Accept-Language: zh-cn");
client.Headers.Add("Referer", "http://192.168.0.4:8002/register");
byte[] responseData = client.UploadData(url, "POST", postData); //得到返回字符流
string srcString = Encoding.UTF8.GetString(responseData); //解码
}
}
}
mono for android代码记录1 WebClient Post数据到Nopcommerce(post数据到MVC5)的更多相关文章
- mono for android 学习记录
C#开发Android应用实战(全 扫描 中文版) 学习记录: 拖完控件后,不要急着按F5,需要重新生成,才能自动修改 Resource.Designer.cs 文件 1. Activity 是基于a ...
- Android代码混淆及项目发布方法记录
Android代码混淆及项目发布步骤记录 本来整理了一份Android项目混淆与发布的文档,突然想到何不写篇博客,分享一下呢,如是便有了本文. Android代码混淆及项目发布步骤记录 一.清理 ...
- Android(4)—Mono For Android 第一个App应用程序
0.前言 年前就计划着写这篇博客,总结一下自己做的第一个App,却一直被新项目所累,今天抽空把它写完,记录并回顾一下相关知识点,也为刚学习Mono的同学提供佐证->C#也是开发Android的! ...
- Mono for Android开发调研笔记
安装完Mono for Android(简称:MonoDroid)之后,可以用MonoDevelop或Visual Studio来开发Mono for Android应用程序:目前只能在模拟器上调试和 ...
- mono for android学习过程系列教程(1)
直接进入主题,关于mono for android的学习,首先配置好环境,如何配置环境,度娘谷歌一大堆,记得使用破解版. 我自己是百度“黑马四期”传智播客的视频,里面有破解版开发环境的软件. 今天直接 ...
- mono for android中使用dapper或petapoco对sqlite进行数据操作
在mono for android中使用dapper或petapoco,很简单,新建android 类库项目,直接把原来的文件复制过来,对Connection连接报错部分进行注释和修改就可以运行了.( ...
- Mono for Android 优势与劣势
原文:Mono for Android 优势与劣势 最近有兴趣了解一下Mono for Andriod,也就是使用.NET平台来开发Andriod程序.Mono for Android API 几乎映 ...
- (转)Mono for Android 优势与劣势
最近有兴趣了解一下Mono for Andriod,也就是使用.NET平台来开发Andriod程序.Mono for Android API 几乎映射标准的Andriod API.例如,两边API几乎 ...
- 【月入41万】Mono For Android中使用百度地图SDK
借助于Mono For Android技术,.Net开发者也可以使用自己熟悉的C#语言以及.Net来开发Android应用.由于Mono For Android把Android SDK中绝大部分类库都 ...
随机推荐
- devexpress中如何给TabPage控件的Tab定义背景色
js: /*tab选项卡样式*/ .color .dxtc-link { background-color: #bf4e6a !important; } 后台代码: //选项卡样式 protected ...
- JS出现illegal character非法字符提示
引用js文件,js文件内的汉字在页面显示乱码 解决方式: a. 保持js文件编码与jsp页面编码格式一致: b. 在引入js文件时,在script中添加charset=""属性,指 ...
- 表格制作模块xlwt
import xlwtworkbook = xlwt.Workbook(encoding = 'ascii') #创建workbook 括号内容视情况而定sheetname = 'Sheet'book ...
- iOS 发送Email
第一步:在程序中添加MessageUi.framework框架 第二步:引入#import <MessageUI/MessageUI.h>头文件 第三步:代码实现 3.1判断是否可以发送邮 ...
- Java Web的开始学习
今天开始学习Web了,需要的前提技能是 XML ,我还不太熟悉,今天的任务需要熟悉一下 XML-- 输入输出流 I/O 序列化反序列化,也需要看一下,我看这两块会有用到. 任务: ---- ...
- Asp.Net MVC4入门指南(2):添加一个控制器
MVC代表: 模型-视图-控制器 .MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程序包含: · Models: 表示该应用程序的数据并使用验证逻辑来强制实施业务规则的数据 ...
- Asp.net mvc上传多张图片后台存储
前台页面通过<file name="img">标签数组上传图片,后台根据Request.Files["img"]来接收前台上传的图片. 1 Syst ...
- [linux]linux普通用户安装rpm软件
先下载rpm文件 yumdownloader xxxx.rpm 直接wget等其他方式下载也可以. 解压 rpm2cpio xxxx.rpm |cpio -idvm 修改环境变量 将新增的软件的可执行 ...
- 20145225《Java程序设计》 第5周学习总结
20145225<Java程序设计> 第5周学习总结 教材学习内容总结 第八章 异常处理 8.1语法与继承架构 try.catch:try.catch代表错误的对象后做一些处理. 异常继承 ...
- C# HttpHelper 采集
httphelper http://www.sufeinet.com/thread-6-1-1.html