1. 程式人生 > >C# HttpWebRequest\HttpWebResponse\WebClient傳送請求解析json資料

C# HttpWebRequest\HttpWebResponse\WebClient傳送請求解析json資料

======================================================================================================================================
/// <summary>
/// 日期:2016-2-4
/// 備註:bug已修改,可以使用
/// </summary>
public static void Method1()
{
    try
    {
        string domain = "http://192.168.1.6:8098/";
        string url = domain + "/Signin/LoginApi";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        //request.ContentType = "application/json";
        request.ReadWriteTimeout = 30 * 1000;

        ///新增引數
        Dictionary<String, String> dicList = new Dictionary<String, String>();
        dicList.Add("UserName", "
[email protected]
");         dicList.Add("Password", "000000");         String postStr = buildQueryStr(dicList);         byte[] data = Encoding.UTF8.GetBytes(postStr);         request.ContentLength = data.Length;         Stream myRequestStream = request.GetRequestStream();         myRequestStream.Write(data, 0, data.Length);         myRequestStream.Close();         HttpWebResponse response = (HttpWebResponse)request.GetResponse();         StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);         var retString = myStreamReader.ReadToEnd();         myStreamReader.Close();     }     catch (Exception ex)     {         log.Info("Entered ItemHierarchyController - Initialize");         log.Error(ex.Message);     } } ======================================================================================================================================

升級版本,提取到幫助類,封裝物件

using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Net;
using System.Text;
using System.Web;

namespace CMS.Common
{
    public class MyHttpClient
    {
        public string methodUrl = string.Empty;
        public string postStr = null;

        public MyHttpClient(String methodUrl)
        {
            this.methodUrl = methodUrl;
        }

        public MyHttpClient(String methodUrl, String postStr)
        {
            ///this.methodUrl = ConfigurationManager.AppSettings["ApiFrontEnd"];///http://192.168.1.6:8098/Signin/LoginApi
            ///this.postStr = postStr;

            this.methodUrl = methodUrl;
            this.postStr = postStr;
        }

        /// <summary>
        /// GET Method
        /// </summary>
        /// <returns></returns>
        public String ExecuteGet()
        {
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(this.methodUrl);
            myRequest.Method = "GET";

            HttpWebResponse myResponse = null;
            try
            {
                myResponse = (HttpWebResponse)myRequest.GetResponse();
                StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
                string content = reader.ReadToEnd();
                return content;
            }
            //異常請求
            catch (WebException e)
            {
                myResponse = (HttpWebResponse)e.Response;
                using (Stream errData = myResponse.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(errData))
                    {
                        string text = reader.ReadToEnd();

                        return text;
                    }
                }
            }
        }

        /// <summary>
        /// POST Method
        /// </summary>
        /// <returns></returns>
        public string ExecutePost()
        {
            string content = string.Empty;

            Random rd = new Random();
            int rd_i = rd.Next();
            String nonce = Convert.ToString(rd_i);
            String timestamp = Convert.ToString(ConvertDateTimeInt(DateTime.Now));
            String signature = GetHash(this.appSecret + nonce + timestamp);

            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.methodUrl);
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                //request.ContentType = "application/json";
                request.Headers.Add("Nonce", nonce);
                request.Headers.Add("Timestamp", Convert.ToString(StringProc.ConvertDateTimeInt(DateTime.Now)));
                request.Headers.Add("Signature", signature);
                request.ReadWriteTimeout = 30 * 1000;

                byte[] data = Encoding.UTF8.GetBytes(postStr);
                request.ContentLength = data.Length;

                Stream myRequestStream = request.GetRequestStream();

                myRequestStream.Write(data, 0, data.Length);
                myRequestStream.Close();

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                content = myStreamReader.ReadToEnd();
                myStreamReader.Close();
            }
            catch (Exception ex)
            {
            }
            return content;
        }
    }

    public class StringProc
    {
        public static String buildQueryStr(Dictionary<String, String> dicList)
        {
            String postStr = "";

            foreach (var item in dicList)
            {
                postStr += item.Key + "=" + HttpUtility.UrlEncode(item.Value, Encoding.UTF8) + "&";
            }
            postStr = postStr.Substring(0, postStr.LastIndexOf('&'));
            return postStr;
        }

        public static int ConvertDateTimeInt(System.DateTime time)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
            return (int)(time - startTime).TotalSeconds;
        }
    }
}

前端呼叫

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CMS.Common;
using Newtonsoft.Json;

namespace Medicine.Web.Controllers
{
    public class DefaultController : Controller
    {
        public ActionResult Index()
        {
            #region DoGet

            string getResultJson = this.DoGet(url);
            HttpClientResult customerResult = (HttpClientResult)JsonConvert.DeserializeObject(getResultJson, typeof(HttpClientResult));

            #endregion

            #region DoPost

            string name = Request.Form["UserName"];
            string password = Request.Form["Password"];

            Dictionary<String, String> dicList = new Dictionary<String, String>();
            dicList.Add("UserName", name);
            dicList.Add("Password", password);
            string postStr = StringProc.buildQueryStr(dicList);

            string postResultJson = this.DoPost(url, postStr);
            HttpClientResult userResult = (HttpClientResult)JsonConvert.DeserializeObject(postResultJson, typeof(HttpClientResult));

            #endregion

            return View();
        }

        /// <summary>
        /// GET Method
        /// </summary>
        /// <param name="portraitUri">url地址</param>
        /// <returns></returns>
        private String DoGet(string portraitUri)
        {
            MyHttpClient client = new MyHttpClient(portraitUri);
            return client.ExecuteGet();
        }

        /// <summary>
        /// POST Method
        /// </summary>
        /// <param name="portraitUri">url地址</param>
        /// <param name="postStr">請求引數</param>
        /// <returns></returns>
        private String DoPost(string portraitUri, string postStr)
        {
            MyHttpClient client = new MyHttpClient(portraitUri, postStr);
            return client.ExecutePost();
        }

        public class HttpClientResult
        {
            public string UserName { get; set; }

            public bool Success { get; set; }
        }
    }
}

HttpClient

var responseString = string.Empty;
using (var client = new HttpClient())
{
    var values = new Dictionary<string, string>
    {
        { "apikey", apiKey },
        { "mobile", phoneNumber },
        { "text", smsMessage }
    };
    
    var content = new FormUrlEncodedContent(values);
    var response = await client.PostAsync(url, content);
    responseString = await response.Content.ReadAsStringAsync();
}

相關推薦

C# HttpWebRequest\HttpWebResponse\WebClient傳送請求解析json資料

====================================================================================================================================== ///

c語言建立和解析json資料

之前一篇有說到使用lincurl庫獲取網頁資料,那麼問題來了,當我們獲取到的資料大多是json的格式,應該怎麼解析出我們需要的欄位呢?下面我們使用json-glib庫來對json資料進行建立和解析。 #include<json-glib/json-glib.h> #include

http請求解析json listview多條目展示 +跳轉webview展示

1.Mainactivity主頁面 package com.example.week01_02; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Async

Http請求解析json listview多條目展示加到資料庫

1.MainActivity主介面 package com.example.week01_01; import android.annotation.SuppressLint; import android.content.DialogInterface; import android

易語言 post請求 解析json 初學者記錄 多多進寶

公司要求做爬蟲時的個人初學記錄 .版本 2 .區域性變數 局_網址, 文字型 .區域性變數 局_方式, 整數型 .區域性變數 ADD_資料包, 類_POST資料類 .區域性變數 局_提交資料, 文字型 .區域性變數 ADD_協議頭, 類_POST資料類 .區域性變數 局_提交協議頭, 文

安卓開發筆記(九)—— HttpURLConnection請求訪問Web服務,解析JSON資料,多執行緒,CardView佈局技術(bilibili的使用者視訊資訊獲取軟體)

中山大學資料科學與計算機學院本科生實驗報告 (2018年秋季學期) 一、實驗題目 WEB API 第十四周實驗目的 學會使用HttpURLConnection請求訪問Web服務 學習Android執行緒機制,學會執行緒更新UI 學會解析JSO

c# post請求獲取json資料

        /// <summary>         /// get http請求獲取位置資訊         /// </summary>         interna

okhttp傳送post請求攜帶json資料,並接收json資料

okhttp工具類: package tools; import com.squareup.okhttp.*; import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; /

Java從網路中請求獲取JSon資料以及解析JSON資料----(自創,請註明)

 Json資料是比較常用的資料型別解析,優點就不多說啦。來看看方法: public static JSONObject getJsonObject(String url) { JSONObjec

Android--使用原生技術實現ListView(原生技術實現網路非同步請求解析json資料

涉及到的原生技術: 1.原生技術實現網路非同步請求 1.原生技術解析json資料 實現步驟: 實現程式碼: **第一二步比較簡單,直接跳過 import android.content.Context; import

C# HttpWebRequest GET HTTP HTTPS 請求

這個需求來自於我最近練手的一個專案,在專案中我需要將一些自己發表的和收藏整理的網文集中到一個地方存放,如果全部採用手工操作工作量大而且繁瑣,因此周公決定利用C#來實現。在很多地方都需要驗證使用者身份才可以進行下一步操作,這就免不了POST請求來登入,在實際過程中發現有些網

java 通過傳送json,post請求,返回json資料

import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java

C語言cJSON庫的使用,解析json資料格式 C語言cJSON庫的使用,解析json資料格式

C語言cJSON庫的使用,解析json資料格式 摘自:https://www.cnblogs.com/piaoyang/p/9274925.html     對於c語言來說是沒有字典這樣的結構的,所以對於解析json格式的資料來說不是那麼好解析,但是有些時候又會需要處理這樣的資料格式,這裡就有

swift http請求返回json資料解析

        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as a

Kettle--url請求獲取JSON資料解析

1、場景  某個請求地址返回的資料是json,用kettle請求該路徑,並將json解析後存放到文字中;2、kettle流程步驟1:REST Client 為設定請求步驟2 JSON Input:注意J

Vue元件--父元件發起ajax請求實現json資料(jquery方式)

HTML和Vue: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>父元件發起ajax請求實現json資料(jqueryAjax)</title&g

Vue元件--父元件發起ajax請求實現json資料(jqueryAjax-axios)

HTMl和Vue: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>父元件發起ajax請求實現json資料(jqueryAjax-axios)</t

robotframework 學習(2) :使用RIDE進行介面測試之傳送請求和接收資料斷言

一、RIDE的介紹:         RIDE是robotframework圖形操作前端,也可以理解為一種編輯器,它以cell的形式來進行定義資料和方法,返回結果等,我們可以使用它進行建立測試用例和編寫測試指令碼,並且執行自動化測試。  

ajax中解析json資料的方式

eval();  //此方法不推薦 JSON.parse();  //推薦方法 一、兩種方法的區別 我們先初始化一個json格式的物件:   var jsonDate = '{ "name":"周星馳","age":23 }'   var

Gson解析json資料

簡介: Json資料是類似xml型別的資料轉化格式但是它的傳輸速率遠遠高於xml的解析速率。 這裡簡單的對用gson解析json格式的資料,為什麼說是簡單的介紹呢,因為博主有更簡單的解析方式後期會進行推出或者掃描頭像進 行私聊(公眾號)。 進行整合:  這裡按照a