0

我正在使用 .net 3.5 编写一个简单的 REST Web 服务。这将使用 JSON 将数据传入和传出。我有一个简单的测试 HTML 页面,用于将 POST 数据发送到服务。当我收到数据时,它全部被编码。很公平,所以我应该能够简单地解码它。这就是我遇到问题的地方。我搜索了 Stackoverflow,但找不到任何解决方案。

这是我用来生成测试的测试 HTML。我认为这是正确的。

<input type="text/json" id="contact" name="contact" value='{"FirstName":"John","LastName":"Doe","Organisation":"","AddressID":null,"Status":0,"Credits":1,"Type":1,"ExpiryDate":null,"UserName":"","Password":"","CustomerIconURL":"","CountryCode":"UK","LastUpdated":null,"DateCreated":"2013-03-29T17:25:41.667"}' readonly="readonly" />
<input type="submit" value="send POST" />

我使用以下代码片段从请求中接收数据..

Stream stream = context.Request.InputStream;
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
string JsonBody = Encoding.UTF8.GetString(bytes);

..这给我返回了以下字符串

@"contact=%7B%22FirstName%22%3A%22John%22%2C%22LastName%22%3A%22Doe%22%2C%22Organisation%22%3A%22%22%2C%22AddressID%22%3Anull%2C%22Status%22%3A0%2C%22Credits%22%3A1%2C%22Type%22%3A1%2C%22ExpiryDate%22%3Anull%2C%22UserName%22%3A%22%22%2C%22Password%22%3A%22%22%2C%22CustomerIconURL%22%3A%22%22%2C%22CountryCode%22%3A%22UK%22%2C%22LastUpdated%22%3Anull%2C%22DateCreated%22%3A%222013-03-29T17%3A25%3A41.667%22%7D";

..所以我认为解码(未编码?)这个字符串是相对的,但不能完全得到它......我管理的最接近的是使用以下......

string JsonBody = Uri.UnescapeDataString(JsonBody);

但这返回了我以下...

"@contact={\"FirstName\":\"John\",\"LastName\":\"Doe\",\"Organisation\":\"\",\"AddressID\":null,\"Status\":0,\"Credits\":1,\"Type\":1,\"ExpiryDate\":null,\"UserName\":\"\",\"Password\":\"\",\"CustomerIconURL\":\"\",\"CountryCode\":\"UK\",\"LastUpdated\":null,\"DateCreated\":\"2013-03-29T17:25:41.667\"}"

而且我找不到删除\"to的方法"。我意识到这意味着"仍然逃脱但即使使用

JsonBody = JsonBody.Replace(@"\", "");

..我虽然应该工作,但没有。

因此,如果有人有解决此问题的巧妙方法,我将不胜感激。也许我从 HTML 中以不正确的形式发送字符串?Web 服务的客户端将使用各种平台编写,其中之一是 Drupal。所以我想我会使用一个简单的 HTML 测试页面来开始生成测试 uri ..

非常感谢您的任何想法。

理查德 H

4

0 回答 0