Как опубликовать json в webapi с помощью webclient в .net 3.5

Итак, я пытаюсь вызвать свой метод публикации веб-API (.net 4.0), как показано ниже.

public class ApiClientController : ApiController
{
  [HTTP Post]
  public string RequestMethod(ParamClass MyClass)
    {
      Dostuff\\
    }
}

Вызов этого из моей службы Windows (.net 3.5), как показано ниже

WebClient client = new WebClient();
string webApiUrl = "http://localhost:51482/";
ParamClass param = new ParamClass() { //set params };

//using System.Runtime.Serialization 
Json.DataContractJsonSerializer serializer = new 
Json.DataContractJsonSerializer(param.GetType());

MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, param);

string serialisedData = Encoding.Default.GetString(ms.ToArray());
var response = 
client.UploadString("http://localhost:51482/api/ApiClient/RequestPapp", 
serialisedData);

Также мой класс Param службы Windows выглядит так

[DataContract]
public class ParamClass
{
    [DataMember]
    public string name { get; set; }
    [DataMember]
    public string refNo { get; set; }
    [DataMember]

}

Но в моем веб-api ParamClass MyClass имеет значение null при пост-вызове, а значения не появляются (при отладке). Я также попытался добавить [DataContract] и [DataMember] в Paramclass webapi, но безуспешно. Раньше я выполнял эту задачу из службы Windows с помощью

  client.PostAsJsonAsync<ParamClass>("/api/ApiClient/RequestPapp", param);

И это сработало, но я должен использовать .net 3.5, а httpClient - класс 4.0.

Пожалуйста, помогите мне. Заранее спасибо.

Попробуйте отладить. Используйте сниффер, например wirehark или fiddler, и сравните работающий и неработающий. Обычно вам нужно добавить заголовки http в app.

jdweng 10.08.2018 17:08

Попробуйте установить client.Headers.Add(HttpRequestHeader.ContentType, "application/json");, как показано здесь. Возможно, вам также понадобится сделать client.Headers.Add(HttpRequestHeader.Accept, "application/json");, как показано в комментариях здесь.

dbc 10.08.2018 21:36
0
2
678
0

Другие вопросы по теме