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. 关于oracle的相关基础语句

    ----给表的字段添加描述COMMENT ON COLUMN 数据库名称.表名.表字段 IS '字段描述'; ---设置自动增长 CREATE SEQUENCE emp_sequence INCREM ...

  2. PIC32MZ tutorial -- Blinky LED

    Today I finish the "Blinky LED" application on PIC32MZ starter kit. This application let L ...

  3. svn 命令行创建和删除 分支和tags

    创建分支 svn cp -m "create branch" http://svn_server/xxx_repository/trunk http://svn_server/xx ...

  4. 《C++必知必会》学习笔记

    转载:http://dsqiu.iteye.com/blog/1734640 条款一 数据抽象 抽象数据设计遵循步骤:(1)为类型取一个描述性的名字.(2)列出类型所能执行的操作,不要忘了初始化(构造 ...

  5. screen 命令

    # screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>] 参 ...

  6. ssh连接速度慢解决

    这些天,公司新安装的几台服务器,发现SSH本地连接上去,速度非常慢,慢的难以忍受,大概30秒左右. 后来到网上查了下,尝试了一种办法,效果还可以,特发上来给大家共享. [root@data208 ~] ...

  7. 如何用Jquery实现 ,比如点击图片之后 ,该图片变成向下的箭头,再点击向下箭头的图片 又变成原始图片呢

    <!DOCTYPE html><html><head><meta charset="utf-8" /><title>切换 ...

  8. python之优雅处理套接字错误

    #!/usr/local/bin/python3.5 #coding:utf-8 import sys import socket import argparse def main(): #setup ...

  9. Tornado sqlalchemy

    上篇文章提到了,最近在用 Python 做一个网站.除了 Tornado ,主要还用到了 SQLAlchemy.这篇就是介绍我在使用 SQLAlchemy 的过程中,学到的一些知识. 首先说下,由于最 ...

  10. AS错误:Error:Execution failed for task ':gM99SDK:processReleaseResources'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'F:\BaiduYunDown

    原因,buildToolsVersion 版本太低. 在build.gradle文件设置 buildToolsVersion 设置高一点,但必须是SDK里面有的.