用的WebAPI,你可以使用這樣的事情:
string url = "http://url.of.server/";
Pedro product = new Pedro();
product.FirtsName = "Ola";
product.ID = 1;
product.Idade = 10;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsJsonAsync(url, product).Result;
if (response.IsSuccessStatusCode)
{
// do something
}
}
如果您不使用WepApi,有許多類似的方法,例如:https://stackoverflow.com/a/39414248/7489072
除非您絕對必須/想要發佈二進制文件並控制接收Web服務器,否則不要Base64對帖子正文進行編碼,如註釋中所示。在99%的案例中,Web服務器期望一個純文本體。 如果您需要發佈ASCII範圍以外的字符,請使用正確的HTTP標頭指定Unicode正文加載。
更新1(頭): HttpClient的類具有可以用來設定共同請求報頭,如AcceptEncoding屬性DefaultRequestHeaders。如果你需要的內容頭的更爲精細的控制,在.PostAsJsonAsync代替使用.PostAsync(字符串URI,HttpContent內容)(即只設置JSON的內容了一些默認的標題)
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string stringFromObject = JsonConvert.SerializeObject(product);
HttpContent content = new StringContent(stringFromObject, Encoding.UTF8, "application/json");
content.Headers.Add("YourCustomHeader", "YourParameter");
HttpResponseMessage response = client.PostAsync(url, content).Result;
if (response.IsSuccessStatusCode)
{
// do something
}
}
更新2(編碼): 詳細說明編碼註釋:當然,你應該避免引號和類似的。但這是Json標準的一部分,應該由普通的編碼器/解碼器來處理。最重要的是,您可以對序列化對象的屬性使用任何進一步的編碼。例如字符串上的HTML編碼和二進制屬性上的Base64。只要你知道接收它的網絡服務器會正確解碼它。
{
"id": 3,
"title": "Decode this",
"description": "this is < HTML encoded >",
"profileImgBase64": "Nzg5MzQ4IHdleWhmQVMmKihFJiphc3R5WUdkdCphc14qVHlpZg0K"
}
所以編碼單獨的屬性,但不編碼整個的Json有效載荷,因爲你必須把它在接收管道的開始解碼,它只是不是Web服務器就明白了。
您可以使用[RestSharp](http://restsharp.org/) –
[如何將JSON發佈到服務器?](https://stackoverflow.com/questions/9145667/how-to-後json到服務器) –
將JSON轉換爲字符串,然後base64字符串,然後您需要base64解碼服務器上的數據並將其轉換回對象....它的聲音比它更復雜並且每一端只需要兩個函數調用。 – SPlatten