C 向伺服器發起post和get網路請求

2021-10-25 19:48:38 字數 3049 閱讀 6832

本文前提

擁有一台伺服器並搭建好了站點

已經寫好了php連線資料庫的**,懂得基本的php接收網路請求的方法或函式

會使用vs2017建立c#winform專案,編寫c#**

先分析php**

下面**是獲取資料庫中指定密碼賬號的使用者的的資訊

<?php 

//新建乙個變數用來返回資料

$res

=array

('error'

=>

false);

//新建乙個變數 用來獲取網路請求傳過來的get引數

$action

="000"

;//將網路請求傳入過來的引數 賦值給$action變數if(

isset

($_get

['action'])

)//新建乙個變數 用來獲取網路請求傳過來的get引數

$ad_account

="000"

;//將網路請求傳入過來的引數 賦值給$ad_account變數if(

isset

($_get

['ad_account'])

)//新建乙個變數 用來獲取網路請求傳過來的get引數

$ad_password

="000"

;//將網路請求傳入過來的引數 賦值給$ad_password變數if(

isset

($_get

['ad_password'])

)//根據傳來的賬號和密碼查詢管理員if(

$action

=="select_ad"

)//將資料放在$res變數裡面的users部分(如果不存在users部分就會自動新建)

$res

['uesrs']=

$users

;//關閉連線

$conn

->

close()

;header()

;//以json的格式返回查詢到的資料

echo

json_encode

($res);

}}

可以從**看到get接收三個值action,ad_account,ad_password

那麼我們就在c# 部分網路請求的字串上面加上需要傳進去的引數

string url = 「 + account + 「&ad_password=」 + password;

同時需要注意的是php裡面sql語句的書寫

我們寫的時候盡量用置入的方式來寫 如上面**的

s ql

="se

lect

∗fro

m『ad

mini

stra

tors

info

『whe

re『a

ccou

ntnu

m『=′

sql = "select * from `administratorsinfo` where `accountnum`='

sql="s

elec

t∗fr

om『a

dmin

istr

ator

sinf

o『wh

ere『

acco

untn

um『=

′ad_account』 andpassword=』$ad_password』";

如果用合併的方法 如下面

$sql = 「select * fromadministratorsinfowhereaccountnum=」. $ad_account." and ". 「password=」. $ad_password;

雖然最終結果字串都一樣 但是我當時用到的問題是使用合併的方法的時候當ad_password是中文的時候,無法正確查詢到結果,目前不清楚什麼原因,而用置入的方法 就沒有問題

還需要注意的是 php**中因為查詢到的資料是以陣列的形式新增到$res變數裡面的users部分的所以users應該是乙個陣列下面的c#解析資料的**需要注意一下

為了直觀的知道php檔案響應網路請求返回過來的資料是json型別,我先在瀏覽器上面傳送請求測試一下結果

返回值是下面 很明媚users部分是乙個陣列 此處指查詢到乙個陣列

分析完php**以後,我們就可以寫c#**了 如下面

try

else

}catch

同樣也先分析php**

<?php 

//新建乙個變數用來返回資料

$res

=array

('error'

=>

false);

//新建乙個變數 用來獲取網路請求傳過來的引數

$action

="000"

;//將網路請求傳入過來的引數 賦值給$action變數if(

isset

($_get

['action'])

)//插入資料 如果傳入引數是createif(

$action

=="create"

)else

}else

}

可以知道需要post的資料有四個

$result = con

n−

>qu

ery(

conn->query(

conn

−>qu

ery(

sql);這句話是執行sql語句的意思,除了查詢語句返回的是查詢的結果,其他增刪改返回的是true或者false

這次php響應網路請求的資料型別不是json而是字串 所以不用轉換

於是就可以寫下面的c#**了

try

else

}catch

最後可以知道get和post**都差不多就是post需要傳入鍵值對而get不需

C 發起 GET 和 POST 請求的幾種方法

get 建立 web 請求物件 執行 web 請求 將返回的資料流讀到字串 string result new streamreader response.getresponsestream readtoend post 建立 web 請求物件 初始 web 請求的 post 引數 string p...

初學向本地伺服器發起網路訪問

使用hc httpclient uc httpurlconnection 發起網路訪問的基本步驟 0.申請許可權 清單配置檔案中申請 internet 許可權 1.任何網路訪問的相關 都必須在工作執行緒進行 new asynctask new thread 啟動工作執行緒 2.建立hc uc物件 3...

伺服器互動中的GET與POST

http定義了與伺服器互動的不同方法,最基本的方法有四種,分別是get 查 post 改 put 增 delete 刪 http是基於tcp ip的關於資料如何在全球資訊網中如何通訊的協議。在我大全球資訊網世界中,tcp就像汽車,我們用tcp來運輸資料,它很可靠,從來不會發生丟件少件的現象。但是如果...