c# - 如何在 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"))
这真是一个愚蠢的问题,但我想做的是向这个字符串内容添加变量。问题是我不太明白如何阅读或如何格式化这个字符串(特别是“\”)。如果我需要添加“\”,我通常会在字符串中添加@,所以我不确定“\”是否应该包含在某些部分的字符串中,或者在本示例中用于连接。
有人可以帮助我如何向这个字符串内容添加变量吗?
感谢您的帮助!
解决方案
来自 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 帖子以获取其他用户的其他解释。
推荐阅读
- ansible - 在 Ansible 中执行操作后如何更改变量?
- sql - 以逗号分隔的字符串显示所有父母直到最上面
- amazon-web-services - 无法使用控制台创建 AWS 密钥对
- c# - 当我可以确认我的集合确实有值时,为什么我的列表框不能显示绑定值?
- python - 继续使用在使用 tf.reset_default_graph() 之前创建的张量
- machine-learning - 为什么在无监督学习算法的训练和测试中没有拆分数据?
- reactjs - Babel 没有从当前目录上方的文件中转译 JSX
- excel - 从 2 个工作表中填充模板;第一个完成模板后,第二个工作表中的数据未复制到正确的行
- c# - 如何在 Unity 中使用归一化值修复错误的程序网格
- ansible - 如何避免在ansible中重复项目列表