Service Rest Tipo Post [Json] c# .net

alfinete

Power Member

Tenho um serviço rest que recebe os seguinte parâmetros de entrada:

Parametros de Request :

Headers :

· api-key

Body :

· grant_type

· username

· password

· scope

autorization:

type: básica auth

Username

Password

-------------------------

Quando o executo no postman do chrome funciona correctamente



Mas eu quero executa-lo no .net

Ai não estou a conseguir faze-lo

Queria que todos os parâmetros a cima fossem passados por Json .



Esta a dar o seguinte erro :

“The remote server returned an error: (400) Bad Request.”


Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
using System.Text;
using System.Web.Script.Serialization;

namespace WSRestPostTest
{
  public partial class _Default : System.Web.UI.Page
  {
  protected void Page_Load(object sender, EventArgs e)
  {
  resttest();
  }





  private  void resttest  ()
  {



  string json = "{\"sjSonData\":[{"
  + "\"grant_type\" : \"password\","
  + "\"username\" : \"user\","
  + "\"password\" : \"password\","
  + "\"scope\" :\"user\","
  + "\"api-key\" : \"mykey\""
   
  + "}"
  +"]}";

  const string url = "http://MyService/oauth/token";

  //create an HTTP request to the URL that we need to invoke
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  //request.ContentType = "application/json; charset=utf-8"; //set the content type to JSON
  request.ContentType = "application/json"; //set the content type to JSON
  request.Method = "POST"; //make an HTTP POST
   
  using (var streamWriter = new StreamWriter(request.GetRequestStream()))
  {
  //initiate the request
  JavaScriptSerializer serializer = new JavaScriptSerializer();
  var resToWrite = serializer.Deserialize<Dictionary<string, object>>(json);
  streamWriter.Write(resToWrite);
  streamWriter.Flush();
  streamWriter.Close();
  }
   


  System.Net.CredentialCache credentialCache = new System.Net.CredentialCache();
  credentialCache.Add(
  new System.Uri(url),
  "Basic",
  new System.Net.NetworkCredential("MyUserCredencial", "MyPassCredencial")
  );


  request.Credentials = credentialCache;
  request.PreAuthenticate = true;

   



  // Get the response.
  WebResponse response = request.GetResponse();
  var streamReader = new StreamReader(response.GetResponseStream());
  var result = streamReader.ReadToEnd();

   
  }
  }
}

agradecia uma Ajuda para esta questão

obrigado
 
Back
Topo