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. 9. Linux远程登录

    1. 检查网络是否通畅 C:\Users\cfm>ping 192.168.232.131 正在 Ping 192.168.232.131 具有 32 字节的数据:来自 192.168.232. ...

  2. Windows Server 2003服务器无法下载.exe文件的解决方法

    今天架设了一台Windows Server 2003的网站服务器,发现打开网页后无法下载网站中的.exe文件,经过研究问题得以解决,拿来做个备忘. 解决方法非常简单,只需要在IIS中,将网站属性里的执 ...

  3. IP地址更改小工具(bat命令)

    为了方便切换IP地址,特编制bat命令代码来实现,将以下代码复制到txt文本中,然后保存为bat文件,双击bat文件运行即可. 通过bat命令运行,自动修改IP地址,代码如下: @echo off c ...

  4. Jvm支持的最大线程数

    摘自 http://blog.csdn.net/xyls12345/article/details/26482387 JVM最大线程数 (2012-07-04 23:20:15) 转载▼ 标签: jv ...

  5. encache学习教程

    http://www.cnblogs.com/hoojo/archive/2012/07/12/2587556.html

  6. 解决IE上登陆oracle OEM时报:“证书错误,导航已阻止”的错误

    今天在IE上登陆OEM时,报证书错误,导航已阻止,我选择:继续浏览此网站(不推荐),但是点了之后还没有反应,在网上搜了很多,原因基本都是windows的问题,最后发现问题是:oracle oem证书的 ...

  7. java自带BASE64工具进行图片和字符串转换

    java自带BASE64工具进行图片和字符串转换 import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...

  8. Linux上安装php

    1.安装mysql  http://blog.csdn.net/wy3552128/article/details/8143686 2.安装配置Apache  http://blog.csdn.net ...

  9. HttpURLConnection请求网络数据的Post请求

    //--------全局变量----------- //注册Url    private String urlPath="http://101.200.142.201:8080/VideoP ...

  10. 选择合适的String拼接方法(这篇博客是我抄的)

    package com.test; public class FreeFile { public static void main(String[] args) { // 加号拼接 String st ...