大家好。
此外,在请求中有一个基本认证,在这种情况下,我将它包含在邮递员中,它工作正常。另一方面,在我的C#脚本中,我是这样执行的:
*这是我的模型,其中包含所有数据,用于将对象序列化为JSON。
public class patientMediktor{
public string deviceId { get; set; }
public string deviceType { get; set; }
public string apiVersion { get; set; }
public string language { get; set; }
public externUserClass externUser{ get;set; }
public class externUserClass{
public externUserClass(string partnerExternalId, string username, string newPassword, string gender){
this.partnerExternalId = partnerExternalId;
this.username = username;
this.newPassword = newPassword;
this.gender = gender;
}
public string partnerExternalId { get; set; }
public string username { get; set; }
public string newPassword { get; set; }
public string gender { get; set; }
}
public string includeAuthToken{ get; set; }
}
*这是我创建POST请求的助手类。我插入所有需要的数据,然后将对象序列化为JSON,正如你们中的一些人建议我这样做的那样。它相当干净。
public async Task<string> MediktorHubCrearUsuario(string conf, string userId, string sexo, string deviceId)
{
var sexoStr = "";
if(sexo == "MALE") {
sexoStr = "MALE";
} else if(sexo == "FEMALE") {
sexoStr = "FEMALE";
}
var guid = Guid.NewGuid().ToString(); // guid para el username y el password
var data = new patientMediktor();
data.deviceId = userId;
data.deviceType = "WEB";
data.apiVersion = "4.0.3";
data.language = "es_ES";
data.externUser = new patientMediktor.externUserClass(userId, guid, guid, sexoStr); // extern user
data.includeAuthToken = "true";
string output = JsonConvert.SerializeObject(data);
var ServerMedictor = conf;
var client = new HttpClient{BaseAddress = new Uri(ServerMedictor)};
MediaType = "application/json";
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(MediaType)); //ACCEPT header
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("xxxxxx", "xxxxxxxxxxxx");
var Client = client;
var request = await Client.PostAsJsonAsync("externUser", output);
request.EnsureSuccessStatusCode();
var status = await request.Content.ReadAsStringAsync();
return status;
}
如果有人知道如何处理这件事,那将是非常感激的。我将继续尝试如何解决这个问题的替代方案。*尽管有修改,我仍然有同样的问题。我确实序列化了对象,我得到了我需要的方式。但是,每当涉及到请求时,它会给我一个400个坏请求。
亲切的问候和感谢你
答案就在这里。Basic Auth的头的构造从一开始就是错误的。为了对它进行编码,我必须像新系统那样传递它。网Http。标题。AuthenticationHeaderValue(“Basic”,Convert.tobase64字符串(byteArray)) 并因此响应请求。我还将PostAsJsonAsync替换为PostAsync。它就像一个符咒!最后,我得到一个状态代码200OK,其中包含我需要传递给视图的数据。
public async Task<string> CreateUser(string conf, string userId, string sexo, string deviceId)
{
var sexoStr = "";
if(sexo == "MALE") {
sexoStr = "MALE";
} else if(sexo == "FEMALE") {
sexoStr = "FEMALE";
}
var guid = Guid.NewGuid().ToString(); // guid para el username y el password
var data = new patientMediktor();
data.deviceId = userId;
data.deviceType = "WEB";
data.apiVersion = "4.0.3";
data.language = "es_ES";
data.externUser = new patientMediktor.externUserClass(userId, guid, guid, sexoStr); // extern user
data.includeAuthToken = true;
string json = JsonConvert.SerializeObject(data);
var Client = new HttpClient();
var prueba = "https://xxxxxx.com:443/";
Client.BaseAddress = new Uri(prueba);
var byteArray = Encoding.ASCII.GetBytes("xxxxxxxx:xxxxxxxxx");
Client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var response = Client.PostAsync("backoffice/services/externUser", new StringContent(json, Encoding.UTF8, "application/json")).Result;
response.EnsureSuccessStatusCode();
var respuesta = await response.Content.ReadAsStringAsync();
return respuesta;
}
似乎应该删除以下行末尾的逗号:
sexoStr = "\"gender\": \"MALE\",";
...
sexoStr = "\"gender\": \"FEMALE\",";
一般来说,更喜欢使用模型类并序列化它们(使用Newtonsoft.Json
(示例)或系统)。文本Json),而不是硬编码字符串。
尝试使用PostAsync而不是PostAsJsonAsync
var content=新的StringContent(JsonConvert.SerializeObject(数据),编码。UTF8,“应用程序/json”);
var request=等待httpClient。PostAsync(请求URL、内容);
请在不支持PostAsJsonAsync方法C的HttpClient上查找有关“PostAsJsonAsync”的更多详细信息#
在Play框架中使用Google Plus Sign In Api时,是否必须以不同的方式设置头?是不是我做错了什么? null null 然而,当我使用所有正确的参数发出此请求时,我得到了这个错误 要在Play Framework中发出HTTP请求,您可以使用。我这样提出要求 如您所见,我设置了头部。为了确保设置头的工作正常,我制作了一个程序,在NodeJS(源代码)中吐出请求的头,这就是结果
问题内容: 我的应用程序中有一个需要基本身份验证的特定请求,因此我需要为该请求设置Authorization标头。我读过有关设置HTTP请求标头的信息,但据我所知,它将为该方法的所有请求设置标头。我的代码中有这样的内容: 但我不希望我的每一个帖子请求都发送此标头。有什么方法可以仅为我想要的一个请求发送标头吗?还是我必须在请求后将其删除? 问题答案: 传递给每次调用标头的config对象中有一个标头
我正在为一个项目使用Hackerrank API。查看官方文档,点击这里! 在他们的网站上有一个使用UNIREST的例子, 由于我使用的是axios,所以我将其转换为类似的axios代码,如下所示: 我希望这只适用于示例中所示的示例,但它给我带来了以下错误: 请求失败,状态代码为400 错误:请求失败,状态代码为400 在createError(createError.js:16) 在sett(s
我试图找到使用httr包通过R连接Appannie的API的方法(根本没有API连接的经验)。API要求包含来自appannie网站的请求标题引用:注册App Annie帐户并生成API密钥。将此密钥添加到您的请求标头中,如下所示: 授权:持有人“”引用 我写了这样的代码 命令http_status(getdata)显示我"客户端错误:(401)未经授权"有人能帮我吗,我做错了什么?
堆栈跟踪: java.lang.NullPointerException 在locusttask.salescrm.execute处(salescrm.java:76) 在java.util.concurrent.ThreadPoolExecutor$worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.Run(thread.java: