如何使用参数在Asp.net中制作简单的Json Post

时间:2018-01-02 09:29:47

标签: c# asp.net json xamarin.forms

我在Azure运行的逻辑应用程序连接到内部部署数据库,我已经成功通过xamarin表单发布数据但现在为了使逻辑应用程序链接更安全我想要创建{{ 1}}处理post请求。当我尝试通过邮递员测试它时,它会继续收到此消息

  

“消息”:“请求的资源不支持http方法'POST'。”

我已经在Web Api中制作了帖子代码,我不知道为什么它说我的Asp.net不支持Asp.net方法发布?这是我的完整帖子源代码

html

请查看我的代码并告诉我我的错误在哪里,因为当我在xamarin.forms中尝试这个时它起作用,这里是邮递员身体请求

string sUrl = "My Logic Apps Link";
string sContentType = "application/json"; // or application/xml
// POST api/<controller>
public async void Post(string param1, string param2, string param3)
{
    JObject oJsonObject = new JObject();

    oJsonObject.Add("param1", param1);
    oJsonObject.Add("param2", param2);
    oJsonObject.Add("param3", param3);

    HttpClient oHttpClient = new HttpClient();
    var oTaskPostAsync = await oHttpClient.PostAsync(sUrl, new StringContent(oJsonObject.ToString(), Encoding.UTF8, sContentType));

    if (oTaskPostAsync.IsSuccessStatusCode)
    {
        string content = await oTaskPostAsync.Content.ReadAsStringAsync();
        content.ToString();
    }
}

我尝试使用参数硬编码的get方法及其返回值

{
    "param1":"value",
    "param2":"value",
    "param3":"value"
}

但我不知道为什么帖子模式总是会收到错误信息

[Route("postdata")]
// GET api/Post
public string Get()
{
    var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://xxx-xx.southeastasia.logic.azure.com");
    httpWebRequest.ContentType = "application/json";
    httpWebRequest.Method = "POST";

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
        string json = new JavaScriptSerializer().Serialize(new
        {
            param1 = "value",
            param2 = "value",
            param3 = "value"
        });
        streamWriter.Write(json);
    }

    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        var result = streamReader.ReadToEnd();
        return result;
    }
}

为什么会这样?我在asp.net中仍然是非常新的,你能告诉我我错在哪里的部分谢谢

1 个答案:

答案 0 :(得分:0)

您需要将该属性添加到操作中:

[HttpPost]
public async void Post(string param1, string param2, string param3)

如果你通过身体发送参数,你需要告诉你的行动:

[HttpPost]
public async void Post([FromBody]YourClass params)

看一下这篇文章:https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/sending-html-form-data-part-1