我正在制作一个应用程序,用户可以在其中发布问题等等。我可以通过邮递员使用basic auth发布这个原始应用程序/json。
更新我已经取得了进展,用这种方法我得到的基本方法是无效的错误。但是..。我仍然有一个400坏的请求错误。现在的守则是:
public async Task<string> PostIssueAsync(string username, string password)
{
string data = @"{
'fields': {
'project':
{
'key': 'TEST'
},
'summary': 'zfasf',
'description': 'Creating an issue while setting custom field values via projhect ',
'issuetype': {
'name': 'Fault'
}
}
}";
HttpClient client = new HttpClient();
client.BaseAddress = new System.Uri(Constants.JiraUrl + "rest/api/latest/issue");
var cred = GetEncodedCredentials(username, password);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", cred);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var content = new StringContent(data, Encoding.UTF8, "application/json");
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = client.PostAsync(client.BaseAddress, content).Result;
if (response.IsSuccessStatusCode)
{
}
else
{
var test = response.Content.ReadAsStringAsync().Result;
}
return "";
}错误:在use语句中我使用ReadAsStringAsync查看错误。错误是:“{”errorMessages“:[”意外字符(‘(代码39)):期望双引号开始字段名\n在源:errorMessages行: 2,列:7“}”
我觉得数据文件出了问题。等我走得更远我会更新的。
发布于 2019-12-12 15:13:14
我修好了:)。是数据文件。如果你用的话,这个应该能用。我还添加了GetEncodedCredentiels方法,这样您也可以使用它。谢谢大家的帮助!!
更新我已经取得了进展,用这种方法我得到的基本方法是无效的错误。但是..。我仍然有一个400坏的请求错误。现在的守则是:
public async Task<string> PostIssueAsync(string username, string password)
{
string data = @"{
""fields"": {
""project"":
{
""key"": ""TEST""
},
""summary"": ""test"",
""description"": ""Creating an issue while setting custom field values via projhect"",
""issuetype"": {
""name"": ""Fault""
}
}
}";
HttpClient client = new HttpClient();
client.BaseAddress = new System.Uri(Constants.JiraUrl + "rest/api/latest/issue");
var cred = GetEncodedCredentials(username, password);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", cred);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var content = new StringContent(data, Encoding.UTF8, "application/json");
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = client.PostAsync(client.BaseAddress, content).Result;
if (response.IsSuccessStatusCode)
{
}
else
{
var test = response.Content.ReadAsStringAsync().Result;
}
return "";
}GetEncodedCredentiels方法:
private static string GetEncodedCredentials(string userid, string password)
{
string mergedCredentials = string.Format("{0}:{1}", userid, password);
byte[] byteCredentials = UTF8Encoding.UTF8.GetBytes(mergedCredentials);
return Convert.ToBase64String(byteCredentials);
}发布于 2019-12-11 14:25:02
我认为您可能需要"Encoding.ASCII“部分而不是"Encoding.UTF8”部分。
此外,将其转换为Byte可能会有所帮助。
这个密码适用于我。
System.Net.WebClient cli = new System.Net.WebClient();
string authInfo = My.Settings.username + ":" + My.Settings.password;
cli.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo)));
cli.Headers.Add("Content-Type", "application/json");
var bytes = Encoding.Default.GetBytes(jsonstringpayload);
webClient.UploadDataAsync("http://support.example.com:8080/rest/" + url, "POST", bytes);https://stackoverflow.com/questions/59287818
复制相似问题