J'ai du code JavaScript que je dois convertir en C #. Mon code JavaScript POST du JSON sur un service Web qui a été créé. Ce code JavaScript fonctionne correctement et ressemble à ce qui suit:
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");
}
J'essaie de comprendre comment convertir cela en C #. Mon application utilise .NET 2.0. D'après ce que je peux dire, je dois faire quelque chose comme ce qui suit:
using (WebClient client = new WebClient())
{
string json = "?";
client.UploadString("http://www.mysite.com/1.0/service/action", json);
}
Je suis un peu coincé à ce stade. Je ne sais pas à quoi json
devrait ressembler. Je ne sais pas si j'ai besoin de définir le type de contenu. Si je le fais, je ne sais pas comment faire cela. J'ai aussi vu UploadData
. Donc, je ne sais pas si j'utilise même la bonne méthode. Dans un sens, la sérialisation de mes données est mon problème.
Quelqu'un peut-il me dire ce qui me manque ici?
Merci!
WebClient
, et je ne l'ai pas fait fonctionner. Ensuite, j'ai essayé cette solution, et cela a fonctionné comme un charme. J'utilisaisUTF8Encoding
au lieu deASCIIEncoding
pour créer le tableau d'octets, car je ne vois aucune raison d'utiliser ASCII, qui réduit les caractères disponibles d'une manière inacceptable. ASCII n'a que 127 caractères dans le jeu de caractères.La question a déjà reçu une réponse mais je pense avoir trouvé la solution la plus simple et la plus pertinente pour le titre de la question, la voici:
var cli = new WebClient(); cli.Headers[HttpRequestHeader.ContentType] = "application/json"; string response = cli.UploadString("http://some/address", "{some:\"json data\"}");
PS: Dans la plupart des implémentations .net, mais pas dans toutes, WebClient est IDisposable, il est donc préférable de faire «utiliser» ou «éliminer» dessus. Cependant, dans ce cas particulier, ce n'est pas vraiment nécessaire .
la source
L'exemple suivant montre comment POST un JSON via la méthode WebClient.UploadString :
var vm = new { k = "1", a = "2", c = "3", v= "4" }; using (var client = new WebClient()) { var dataString = JsonConvert.SerializeObject(vm); client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); client.UploadString(new Uri("http://www.contoso.com/1.0/service/action"), "POST", dataString); }
la source
POST
argument car ilUploadString
utilise implicitement cette méthode par défaut. De plus, vous voudrez peut-être ajouterclient.Headers.Add(HttpRequestHeader.Accept, "application/json");
si vous prévoyez unJSON
retour.public class WebClient : Component
public class Component : MarshalByRefObject, IComponent, IDisposable