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&register-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)的更多相关文章

  1. mono for android 学习记录

    C#开发Android应用实战(全 扫描 中文版) 学习记录: 拖完控件后,不要急着按F5,需要重新生成,才能自动修改 Resource.Designer.cs 文件 1. Activity 是基于a ...

  2. Android代码混淆及项目发布方法记录

     Android代码混淆及项目发布步骤记录 本来整理了一份Android项目混淆与发布的文档,突然想到何不写篇博客,分享一下呢,如是便有了本文. Android代码混淆及项目发布步骤记录 一.清理 ...

  3. Android(4)—Mono For Android 第一个App应用程序

    0.前言 年前就计划着写这篇博客,总结一下自己做的第一个App,却一直被新项目所累,今天抽空把它写完,记录并回顾一下相关知识点,也为刚学习Mono的同学提供佐证->C#也是开发Android的! ...

  4. Mono for Android开发调研笔记

    安装完Mono for Android(简称:MonoDroid)之后,可以用MonoDevelop或Visual Studio来开发Mono for Android应用程序:目前只能在模拟器上调试和 ...

  5. mono for android学习过程系列教程(1)

    直接进入主题,关于mono for android的学习,首先配置好环境,如何配置环境,度娘谷歌一大堆,记得使用破解版. 我自己是百度“黑马四期”传智播客的视频,里面有破解版开发环境的软件. 今天直接 ...

  6. mono for android中使用dapper或petapoco对sqlite进行数据操作

    在mono for android中使用dapper或petapoco,很简单,新建android 类库项目,直接把原来的文件复制过来,对Connection连接报错部分进行注释和修改就可以运行了.( ...

  7. Mono for Android 优势与劣势

    原文:Mono for Android 优势与劣势 最近有兴趣了解一下Mono for Andriod,也就是使用.NET平台来开发Andriod程序.Mono for Android API 几乎映 ...

  8. (转)Mono for Android 优势与劣势

    最近有兴趣了解一下Mono for Andriod,也就是使用.NET平台来开发Andriod程序.Mono for Android API 几乎映射标准的Andriod API.例如,两边API几乎 ...

  9. 【月入41万】Mono For Android中使用百度地图SDK

    借助于Mono For Android技术,.Net开发者也可以使用自己熟悉的C#语言以及.Net来开发Android应用.由于Mono For Android把Android SDK中绝大部分类库都 ...

随机推荐

  1. 在本地主机上powershell中连接远程主机执行vbs脚本,得到执行结果(2008版及以上)

    在桌面版的主机上远程管理服务器版主机,在本地powershell中连接远程主机执行vbs脚本,得到执行结果. 执行步骤: 1.将本地主机上的Hyper.vbs复制到远程连接主机上.例如,本地vbs脚本 ...

  2. highcharts相关属性

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  3. js 小工具-- 原生 js 去除空格

    // 原生js 去除字符串空格 <script type="text/javascript"> String.prototype.trim = function (){ ...

  4. 解决IE9下JQuery的ajax失效的问题

    jquery ajax在跨域访问post请求的时候,ie9以下无效(包括ie9)   1. 设置浏览器安全属性,启用[通过域访问数据源]选项,如图:

  5. ORACLE 回收站导致的故障

    ORACLE 回收站导致的故障 一.故障 (1)现象     一个生产环境,oracle数据库挂死,严重影响生产.查死锁sql,发现大量日志插入语句,并且每条运行时间都超过一分钟,插入非常缓慢.据分析 ...

  6. Ajax 结构及使用

    AJAX AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaSc ...

  7. sql left join、right join、inner join

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...

  8. Markdown常用基本语法

    现在是我在学习Markdown时做的笔记.学完这些Markdown的基本使用已经不成问题. 1. 标题设置(让字体变大,和word的标题意思一样)在Markdown当中设置标题,有两种方式:第一种:通 ...

  9. Python学习笔记-Day5

    冒泡算法: 实现1: a = [,,,,,,,,,,,,,,] def bubble(badlist): sort = False while not sort: sort = True ): ]: ...

  10. WebStorm常用设置和常用快捷键

    今天下载了最新版本的WebStorm 7.反正又要重新设置一番了,干脆写下来记录到博客里面,免得以后每次忘了还要到处搜索比较麻烦. 加速 禁用多余的插件,关掉没必要的代码检查项.webstorm慢的原 ...