首页 > 解决方案 > 如何在 StringContent("") 中添加变量

问题描述

再会,

我对编程和尝试使用 API 真的很陌生。

我从 API 文档中看到了这个例子

using (var content = new StringContent("{  \"orderNumber\": \"TEST-ORDER-API-DOCS\",  \"orderKey\": \"0f6bec18-3e89-4881-83aa-f392d84f4c74\",  \"orderDate\": \"2015-06-29T08:46:27.0000000\",  \"paymentDate\": \"2015-06-29T08:46:27.0000000\",  \"shipByDate\": \"2015-07-05T00:00:00.0000000\",  \"orderStatus\": \"awaiting_shipment\",  \"customerId\": 37701499,  \"customerUsername\": \"headhoncho@whitehouse.gov\",  \"customerEmail\": \"headhoncho@whitehouse.gov\",  \"billTo\": {    \"name\": \"The President\",    \"company\": null,    \"street1\": null,    \"street2\": null,    \"street3\": null,    \"city\": null,    \"state\": null,    \"postalCode\": null,    \"country\": null,    \"phone\": null,    \"residential\": null  },  \"shipTo\": {    \"name\": \"The President\",    \"company\": \"US Govt\",    \"street1\": \"1600 Pennsylvania Ave\",    \"street2\": \"Oval Office\",    \"street3\": null,    \"city\": \"Washington\",    \"state\": \"DC\",    \"postalCode\": \"20500\",    \"country\": \"US\",    \"phone\": \"555-555-5555\",    \"residential\": true  },  \"items\": [    {      \"lineItemKey\": \"vd08-MSLbtx\",      \"sku\": \"ABC123\",      \"name\": \"Test item #1\",      \"imageUrl\": null,      \"weight\": {        \"value\": 24,        \"units\": \"ounces\"      },      \"quantity\": 2,      \"unitPrice\": 99.99,      \"taxAmount\": 2.5,      \"shippingAmount\": 5,      \"warehouseLocation\": \"Aisle 1, Bin 7\",      \"options\": [        {          \"name\": \"Size\",          \"value\": \"Large\"        }      ],      \"productId\": 123456,      \"fulfillmentSku\": null,      \"adjustment\": false,      \"upc\": \"32-65-98\"    },    {      \"lineItemKey\": null,      \"sku\": \"DISCOUNT CODE\",      \"name\": \"10% OFF\",      \"imageUrl\": null,      \"weight\": {        \"value\": 0,        \"units\": \"ounces\"      },      \"quantity\": 1,      \"unitPrice\": -20.55,      \"taxAmount\": null,      \"shippingAmount\": null,      \"warehouseLocation\": null,      \"options\": [],      \"productId\": 123456,      \"fulfillmentSku\": \"SKU-Discount\",      \"adjustment\": true,      \"upc\": null    }  ],  \"amountPaid\": 218.73,  \"taxAmount\": 5,  \"shippingAmount\": 10,  \"customerNotes\": \"Thanks for ordering!\",  \"internalNotes\": \"Customer called and would like to upgrade shipping\",  \"gift\": true,  \"giftMessage\": \"Thank you!\",  \"paymentMethod\": \"Credit Card\",  \"requestedShippingService\": \"Priority Mail\",  \"carrierCode\": \"fedex\",  \"serviceCode\": \"fedex_2day\",  \"packageCode\": \"package\",  \"confirmation\": \"delivery\",  \"shipDate\": \"2015-07-02\",  \"weight\": {    \"value\": 25,    \"units\": \"ounces\"  },  \"dimensions\": {    \"units\": \"inches\",    \"length\": 7,    \"width\": 5,    \"height\": 6  },  \"insuranceOptions\": {    \"provider\": \"carrier\",    \"insureShipment\": true,    \"insuredValue\": 200  },  \"internationalOptions\": {    \"contents\": null,    \"customsItems\": null  },  \"advancedOptions\": {    \"warehouseId\": 98765,    \"nonMachinable\": false,    \"saturdayDelivery\": false,    \"containsAlcohol\": false,    \"mergedOrSplit\": false,    \"mergedIds\": [],    \"parentId\": null,    \"storeId\": 12345,    \"customField1\": \"Custom data that you can add to an order. See Custom Field #2 & #3 for more info!\",    \"customField2\": \"Per UI settings, this information can appear on some carrier's shipping labels. See link below\",    \"customField3\": \"https://help.shipstation.com/hc/en-us/articles/206639957\",    \"source\": \"Webstore\",    \"billToParty\": null,    \"billToAccount\": null,    \"billToPostalCode\": null,    \"billToCountryCode\": null  }}", System.Text.Encoding.Default, "application/json"))

这真是一个愚蠢的问题,但我想做的是向这个字符串内容添加变量。问题是我不太明白如何阅读或如何格式化这个字符串(特别是“\”)。如果我需要添加“\”,我通常会在字符串中添加@,所以我不确定“\”是否应该包含在某些部分的字符串中,或​​者在本示例中用于连接。

有人可以帮助我如何向这个字符串内容添加变量吗?

感谢您的帮助!

标签: c#api

解决方案


来自 MSDN

提供基于字符串的 HTTP 内容。

StringContent的最基本用途是在访问任何 API 时将数据发送到服务器。

这里我举一个系统中登录 API 的简单示例。

// Following is the key value pairs (data) which we need to send to server via API.
Dictionary<string, string> jsonValues = new Dictionary<string, string>();
jsonValues.Add("username", "testuser");
jsonValues.Add("password", "XXXXXXXXXX"); // better to encrypt passwod before sending to API.

HttpClient client = new HttpClient();

// Used Newtonsoft.Json library to convert object to json string. It is available in Nuget package.
StringContent sc = new StringContent(JsonConvert.SerializeObject(jsonValues), UnicodeEncoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(webAddress, sc);

string content = await response.Content.ReadAsStringAsync();
Console.WriteLine("Result: " + content);

检查SO 帖子以获取其他用户的其他解释。


推荐阅读