我必须在asp.net webforms(c#)https://connect.mycomp.in/ConnectTP/PlaceOrder中调用一个rest API
Below is the curl example
curl \
-X POST https://BaseURL/PlaceOrder \
-d "jData={\"uid\":\"Test\", \"actid\":\"Test\",
\"qty\":\"50\", \"price\":\"1400\", \"ret\":\"DAY\"}“ \
-d “jKey=TRELIU34533456SSUDFGU234”
我正在尝试使用JavaScriptSerializer,但它不能按预期工作,任何帮助都非常感谢。先谢谢你了
object input = new jData
{
uid = "xxxxxxx",
actid = "xxxxxxx",
..........,
..........,
},jKey = "KEYHERe";
string inputJson = (new JavaScriptSerializer()).Serialize(input);
--更新-
服务器返回了错误的请求,有人可以引导吗
var jd1 = new jData
{
uid = "xxxxxxx",
actid = "xxxxxxx",
................,
..........,
};
object input = new PlaceOrderParam
{
jData = jd1,
jKey = Session["tk"].ToString()
};
string inputJson = (new JavaScriptSerializer()).Serialize(input);
WebClient client = new WebClient();
client.Headers["Content-type"] = "application/json";
client.Encoding = Encoding.Default;
string json = client.UploadString(apiUrl, inputJson);
更新2----------------------------------------------------
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), apiUrl))
{
request.Content = new StringContent("jData={\"uid\":\"xxxxxxx\",\"actid\":\"xxxxxxx\",\"ret\":\"DAY\"}\" , \"jKey=" + Session["tk"].ToString() + "");
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
var response = await httpClient.SendAsync(request);
}
}
尝试将curl转换为HttpClient,但仍然是错误的请求
更新3--------------------
QUERY PARAMETERS
Parameter
Name Possible value Description
jData* Should send json object with fields in below list
jKey* Key Obtained on login success.
1条答案
按热度按时间cyvaqqii1#
不能对
curl
使用两个-d
参数。如果你这样做,只有最后一个会被传递,这意味着你的有效负载是jKey=TRELIU34533456SSUDFGU234
,这可能不是你想要的。此外,这甚至不是有效的JSON,这是JavaScriptSerializer.serialize()
输出的。我认为
curl
命令应该如下所示你的JavaScript看起来是正确的,所以不知道为什么不工作。
如果不知道API所期望的是什么,就很难说
curl
调用或JavaScript。看起来行延续(
\
)和奇数引号(“
和”
)与("
)也可能会让你绊倒。(我可能是错的--可能是复制/粘贴到你的问题中)。我编辑了这个命令,删除了可能会混淆JSON字符串的行继续符,以转义引号。