0

场景如下:我们有一个 iOS 应用程序,它向我的 .NET Web API 发出 HTTP POST 请求。调用的方法是PostPicture(如下):

// POST api/blah
    [HttpPost]
    public string PostPicture(HttpRequestMessage msg)
    {
        HttpContext context = HttpContext.Current;
        etc...

如您所见,此方法采用HttpRequestMessage. 我遇到的问题是我经常不得不依靠 iOS 应用程序来进行调用,只是为了能够传入HttpRequestMessage测试我的 .NET 代码。

我让 iOS 开发人员将设备 (iOS) 发送到我的 Web API 的 HTTP POST 内容发送给我。他以文本文件的形式发送了它。

问题:有没有什么办法可以HttpRequestObject在我的代码中获取这些原始内容并基本上用这些内容模拟一个 HTTP POST 请求(当然还基于这些内容创建一个)?

这是他发给我的 HTTP POST 内容:

{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf370
{\fonttbl\f0\fnil\fcharset0 Menlo-Bold;\f1\fnil\fcharset0 Menlo-Regular;}
{\colortbl;\red255\green255\blue255;\red81\green112\blue255;}
\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\deftab529
\pard\tx529\pardeftab529\pardirnatural

\f0\b\fs22 \cf0 \CocoaLigature0 2013-06-14 15:17:32.969 blah[11765:907] insertEntity URL: http://domain/blahWS/API/blah/PostPicture\
\pard\tx529\pardeftab529\pardirnatural

\f1\b0 \cf0 Printing description of mikeTest:\
\{\
  "imageDataBlob" : "JVBERi0xLjMKJcTl8uXrp\\/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAg\\nUiAvRmlsdGVyIC9GbG...",\
  "layer" : "0",\
  "blah" : "YES",\
  "pdf" : "JVBERi0xLjMKJcTl8uXrp\\/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAg\\nUiAvRmlsdGVyIC9GbG...",\
  "imageCount" : "3",\
  "groupID" : "1_userName",\
  "longitude" : -95.98030149945615,\
  "latitude" : 36.74866412304039,\
  "JsonData" : "[\{ \\"geometry\\" : \{\\"x\\":-95.98030149945615 , \\"y\\": 36.74866412304039\} ,\\"attributes\\":\{ \\"Feature\\" : \\"Chemical_Treatment\\",\\"Type\\" : \\"\\",\\"Prod_Name\\" : \\"\\",\\"Line_Dia\\" : \\"\\",\\"Line_Mat\\" : \\"Select\\",\\"Prspct_Fld\\" : \\"\\",\\"Comments\\" : \\"\\",\\"HTML_LINK\\":\\"http:\\/\\/subdomain.url.net\\/blahWS\\/ImageViewer\\/Display\\/1_userName_2013-06-14_15:17:02\\",\\"APP_LAT\\":\\"36.74866412304039\\",\\"APP_LONG\\":\\"-95.98030149945615\\", \\"groupID\\":\\"1_userNamep_2013-06-14_15:17:02\\"\}\}]",\
  "Timestamp" : "2013-01-01 12:12:23",\
  "username" : "_userName"\
\}\
\pard\tx529\pardeftab529\pardirnatural

\f0\b \cf2 (lldb) }
4

2 回答 2

2

您可以使用FiddlerThe Composer 轻松模拟请求。

注意:此开发人员向您发送的请求看起来像一些 RTF 文件,而不是实际HTTP请求。您可能熟悉 HTTP 请求包含 2 个部分:执行 HTTP 请求所需的 HTTP 标头和正文有效负载。

于 2013-06-14T20:42:18.503 回答
1

您可以HttpClient在 .NET 4.0 和 4.5 中使用该类。

于 2013-06-14T20:40:30.197 回答