alfinete
Power Member
Questão
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.”
Codigo c#
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