Tenho alguns códigos JavaScript que preciso converter para C #. Meu código JavaScript faz um POST de algum JSON em um serviço da web que foi criado. Este código JavaScript funciona bem e se parece com o seguinte:
var vm = { k: "1", a: "2", c: "3", v: "4" };
$.ajax({
url: "http://www.mysite.com/1.0/service/action",
type: "POST",
data: JSON.stringify(vm),
contentType: "application/json;charset=utf-8",
success: action_Succeeded,
error: action_Failed
});
function action_Succeeded(r) {
console.log(r);
}
function log_Failed(r1, r2, r3) {
alert("fail");
}
Estou tentando descobrir como converter isso para C #. Meu aplicativo está usando .NET 2.0. Pelo que posso dizer, preciso fazer algo como o seguinte:
using (WebClient client = new WebClient())
{
string json = "?";
client.UploadString("http://www.mysite.com/1.0/service/action", json);
}
Estou um pouco preso neste ponto. Não tenho certeza de como json
deveria ser. Não tenho certeza se preciso definir o tipo de conteúdo. Se eu fizer isso, não tenho certeza de como fazer isso. Eu também vi UploadData
. Portanto, não tenho certeza se estou usando o método certo. Em certo sentido, a serialização dos meus dados é meu problema.
Alguém pode me dizer o que estou perdendo aqui?
Obrigado!
WebClient
, e não consegui fazer funcionar. Então tentei esta solução e funcionou como um encanto. Eu estava usando emUTF8Encoding
vez deASCIIEncoding
para criar a matriz de bytes, porque não vejo razão para usar ASCII, o que reduz os caracteres disponíveis de uma forma que é inaceitável. ASCII tem apenas 127 caracteres no conjunto de caracteres.A pergunta já foi respondida, mas acho que encontrei a solução que é mais simples e mais relevante para o título da pergunta, aqui está:
fonte
O exemplo a seguir demonstra como fazer um POST de JSON por meio do método WebClient.UploadString :
fonte
POST
argumento, poisUploadString
usa esse método implicitamente como padrão. Além disso, você pode querer adicionarclient.Headers.Add(HttpRequestHeader.Accept, "application/json");
se espera umJSON
retorno.public class WebClient : Component
public class Component : MarshalByRefObject, IComponent, IDisposable