using RestSharp;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace Quotation.Common.Extensions
{

public class HttpRequstExtensions
{

/// <summary>
/// 参数
/// </summary>
/// <param name="url"></param>
/// <param name="data"></param>
/// <returns></returns>
public static string httpPostAsync(string url, List<KeyValuePair<string, string>> data)
{
        HttpClient client = new HttpClient();
        var form_data = new FormUrlEncodedContent(data);
        var reponse = client.PostAsync(url, form_data);
        if (reponse.IsCompleted)
        {
              var result = reponse.Result;
              var resdata = result.Content.ReadAsStringAsync();
              return resdata.ToString();
        }
        return "";
}

/// <summary>
/// 发送Get请求,获取内容
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string HttpGet(string url)
{
         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
         request.Credentials = CredentialCache.DefaultCredentials;
         HttpWebResponse response = (HttpWebResponse)request.GetResponse();
         Stream receiveStream = response.GetResponseStream();
         StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
         string text = readStream.ReadToEnd();
         response.Close();
         readStream.Close();
         return text;
}

/// <summary>
/// Post请求
/// </summary>
/// <param name="url"></param>
/// <param name="pars"></param>
/// <returns></returns>
public static string HttpPost(string url, string pars, string contentType = "")
{
          byte[] bytes = Encoding.UTF8.GetBytes(pars);
          HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
          request.Method = "POST";
          request.ContentLength = bytes.Length;
          //request.ContentType = "text/xml";
          if (!string.IsNullOrEmpty(contentType))
                request.ContentType = contentType;
          request.Credentials = CredentialCache.DefaultCredentials;

//Stream writer = request.GetRequestStream();
          //writer.Write(bytes, 0, bytes.Length);
          //writer.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
          Stream receiveStream = response.GetResponseStream();
          StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
          string text = readStream.ReadToEnd();
          response.Close();
          readStream.Close();
          return text;
}

/// <summary>
/// 1.1公用 from 键值对,固定参数
/// </summary>
/// <param name="url"></param>
/// <param name="promotionId"></param>
/// <param name="resultCode"></param>
/// <param name="resultDesc"></param>
/// <returns></returns>
public static string RestSharpPost(string url, string promotionId, int resultCode, string resultDesc)
{
           RestClient client = new RestClient(url);
           RestRequest request = new RestRequest(Method.POST);
           request.AddParameter("promotionId", promotionId);
           request.AddParameter("resultCode", resultCode);
           request.AddParameter("resultDesc", resultDesc);
           IRestResponse response = client.Execute(request);
           if (response.StatusCode == HttpStatusCode.OK)
           {
                  return response.Content;
           }
           else
           {
                  return response.ToJson();
           }
}

/// <summary>
/// 1.2公用 from 键值对
/// </summary>
/// <param name="url"></param>
/// <param name="ht"></param>
/// <returns></returns>
public static string RestSharpPost(string url, Hashtable ht)
{
           RestClient client = new RestClient(url);
           RestRequest request = new RestRequest(Method.POST);
           if (ht != null && ht.Count > 0)
           {
                   foreach (DictionaryEntry de in ht)
                   {
                            request.AddParameter(de.Key.ToStr(), de.Value);
                   }
           }
           IRestResponse response = client.Execute(request);
           if (response.StatusCode == HttpStatusCode.OK)
           {
                    return response.Content;
           }
           else
           {
                    return response.ToJson();
           }
}

/// <summary>
/// 1.3公用raw 推荐使用
/// </summary>
/// <param name="url"></param>
/// <param name="data">json 字符串</param>
/// <returns></returns>
public static string RestSharpPostRaw(string url, string data)
{
           RestClient client = new RestClient(url);
           RestRequest request = new RestRequest(Method.POST);
           if (!string.IsNullOrEmpty(act))
           {
                      request.AddHeader("content-type", "application/json");
                      request.AddParameter("application/json", data, ParameterType.RequestBody);
           }

IRestResponse response = client.Execute(request);
           if (response.StatusCode == HttpStatusCode.OK)
           {
                      return response.Content;
           }
           else
           {
                      return response.ToJson();
           }
}

调用   Raw

string ret= "";
string url= "https://www.xxxx.com/index/update";

//对象参数

var data = new { shopId="你好1", grossProfit = "你好2", rebate = "你好3"};

try
{
           //第一种方法调用Raw
           ret = HttpRequstExtensions.RestSharpPostRaw(url, data.ToJson());

//第二种方法调用Raw
           //ret = HttpRequstExtensions.HttpPost(url, data.ToJson(), "application/json");

}
catch
{

}

//json  反 json string字符串

public static string ToJson(this object obj)
{
           var json = string.Empty;
           try
           {
                      var jSetting = new JsonSerializerSettings { ContractResolver = new NullToEmptyStringResolver(), DateFormatString = "yyyy-MM-dd HH:mm:ss" };
                      json = JsonConvert.SerializeObject(obj, jSetting);
           }
           catch
           {
                      return json;
           }
           return json;
}

/// <summary>
/// json转对象忽略大小写
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T ToObject<T>(this string json) where T : new()
{
           try
           {
                      if (string.IsNullOrEmpty(json))
                             return new T();
                      return JsonConvert.DeserializeObject<T>(json);
           }
           catch (Exception ex)
           {
                      return new T();
           }
}

}}

C# 后台Http访问 raw from 键值对的更多相关文章

  1. 使用PowerShell读、写、删除注册表键值

    访问注册表键值 在PowerShell中,用户可以通过类似于HKCU:(作为HKEY_CURRENT_USER)和HKLM:(代表HKEY_LOCAL_MATCHINE)的虚拟驱动器访问注册表键值. ...

  2. 页面传递的都是string ; 每个标签要有name的原因是为了取值 因为传递给后台是键值对的形式

    页面传递的都是string ; 每个标签要有name的原因是为了取值  因为传递给后台是键值对的形式

  3. $.ajax({ }) 里面的success函数不执行 | 回调函数返回的值 用对象,下标,键值对访问不到时

    原因一般是  dataType:'json' 数据类型设置成了json  ,去掉这个设置即可 $.ajax({ }) 回调函数返回的值 用对象,下标,键值对访问不到时,考虑是否返回数据为字符串 考虑是 ...

  4. angularjs之ng-mode获取lobject类型里的键值

    有时候数据库定义的时候,用一个对象来代表某个属性,之后直接访问对象就可以获取全部该对象的属性,但是有时需求访问对象中包含中的键值,引用键值的时候可以直接用.来获取对象的键值,比如 对象points: ...

  5. 11 Servlet_03 关键字总结 资源跳转:重定项 键值对 继承类 do-get do-post Request域 Context域 =空针解决方法

    知识点总结: 1.java里的关键字: byte short int long  数据类型 (正整数)char  数据类型(单字符型)boolesn ture false  布尔类型float dou ...

  6. Learning Spark 第四章——键值对处理

    本章主要介绍Spark如何处理键值对.K-V RDDs通常用于聚集操作,使用相同的key聚集或者对不同的RDD进行聚集.部分情况下,需要将spark中的数据记录转换为键值对然后进行聚集处理.我们也会对 ...

  7. etcd:用于服务发现的键值存储系统

    etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现.etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理 ...

  8. angularJS操作键值对象(类似java的hashmap)填坑小结

    前言: 我们知道java的hashmap中使用最多的是put(...),get(...)以及remove()方法,那么在angularJS中如何创造(使用)这样一个对象呢 思路分析: 我们知道在jav ...

  9. 【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性

    本来应该上周更新的,结果碰上五一,懒癌发作,就推迟了 = =.以后还是要按时完成任务.废话不多说,第四章-第六章主要讲了三个内容:键值对.数据读取与保存与Spark的两个共享特性(累加器和广播变量). ...

随机推荐

  1. lodash常用函数 - Array、Collection

    lodash常用函数 - Array.Collection lodash版本 v3.10.1 1.Array.Collection pull 移除数组中满足条件的元素 var array = [1, ...

  2. 用QT写一个对话框

    打开QT creater创建取名去findDialog的项目,这个项目要基于QDialog.直接上FindDialog.h的头文件. #ifndef FINDDIALOG_H #define FIND ...

  3. 【java基础】随手写的一个日期计算,新手可以看看

    随手写的一个例子, 只是练习下自己的代码布局以及思路.. 1. 先写下简单的测试 2. 根据常用的不用修改的变量抽取出来, 作为常量(常量的命名可能有点不规范,谅解~) 3. 方法的作用不一样, 抽取 ...

  4. std::vector的内存释放

    先上一段代码 using namespace std; class A{ public: ~A(){ cout << "deconstruct"; }; }; #inc ...

  5. 分享Spring Scheduled定时器的用法

    摘要:在coding中经常会用到定时器,指定每隔1个小时,或是每天凌晨2点执行一段代码段,若是使用java.util.Timer来做这种事情,未免重复造轮子.幸亏Spring中封装有定时器,而且非常好 ...

  6. oracle中PLSQL存储过程中如何使用逗号分隔的集合(逗号分隔字符串转换为一个集合)

    原文: https://blogs.oracle.com/aramamoo/entry/how_to_split_comma_separated_string_and_pass_to_in_claus ...

  7. Android(java)学习笔记211:Android线程池形态

    1. 线程池简介  多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.     假设一个服务器完成一项任务所需时间为:T1 创建线程时间, ...

  8. PHP-----TP框架基础

    TP框架基础 把Thinkphp框架的压缩包解压到php文件夹下----www目录下.   Thinkphp文件夹都有什么呢??? (所有用TP框架做的程序,要访问程序里面的网页.内容的话,全部要走这 ...

  9. 优化器,sgd,adam等

    https://zhuanlan.zhihu.com/p/32230623 首先定义:待优化参数:  ,目标函数:  ,初始学习率 . 而后,开始进行迭代优化.在每个epoch  : 计算目标函数关于 ...

  10. @RequestParam和@PathVariable的区别及其应用场景

    @RequestParam和@PathVariable这两者之间区别不大,主要是请求的URL不一样 用@RequestParam请求接口时,URL是:http://www.test.com/user/ ...