Я реплицирую запрос branch.io на C# для API и пытаюсь создать URL-адрес, сериализуя их снова через NewtonSoft. Я хорошо воспроизвел основную часть запроса на создание URL-адреса и создал URL-адрес. Но у меня проблема, когда я попытался определить мои desktop_url и marketing_title в запросе.
{"type":2, "branch_key":"key_test_lerbZ22zyjfpfFtl2auzukafywi220dN", "campaign":"new_product_annoucement", "channel":"email", "tags":["monday", "test123"], "data":"{\"name\": \"Alex\", \"email\": \"[email protected]\", \"user_id\": \"12346\", \"$desktop_url\": \"https://www.google.com\",\"$marketing_title\": \"This is Awesome\"}"}
Как вы можете видеть из запроса JSON, десктоп URL и маркетинг названия оба имеет знак $ на передних $ desktop_url то есть и $ marketing_title.
Я думаю, что это проблема, которая препятствует мне создавать реплику в C#. Я знаю, что запрос верен, как если бы вы запускали его сейчас, он определенно будет ссылаться на страницу поиска Google.
Мой C# код выглядит следующим образом:
[HttpPost]
public string GetWithBody([FromBody] getInfo info)
{
String mesh = info.affCode + "=========>" + info.appType;
using (var client = new HttpClient())
{
var request = new branchIOinfo()
{
type = 2,
branch_key = "key_test_lerbZ22zyjfpfFtl2auzukafywi220dN",
campaign = info.appType,
alias = info.affCode,
data = new BranchRequestData
{
desktop_url = "https://www.google.com/"
}
};
var response = client.PostAsync("https://api.branch.io/v1/url",
new StringContent(JsonConvert.SerializeObject(request).ToString(),
Encoding.UTF8, "application/json")).Result;
if (response.IsSuccessStatusCode)
{
dynamic content = JsonConvert.DeserializeObject(
response.Content.ReadAsStringAsync()
.Result);
return content.url;
}
else
{
return "Error Creating URL";
}
Моя C# Модель выглядит следующим образом:
namespace BranchIOAPI.Models
{
public class getInfo
{
public string affCode { get; set; }
public string appType { get; set; }
}
public class branchIOinfo
{
public int type { get; set; }
public string branch_key { get; set; }
public string campaign { get; set; }
public string alias { get; set; }
public BranchRequestData data { get; set; }
}
public class BranchRequestData
{
public string desktop_url { get; set; }
}
}
Как я должен повторить, что знак $ в этом коде или что это правильный путь повторите этот запрос JSON.
Эй Алекс, проблема C# на самом деле не признают $ как символ, который можно привязать к JSONString. Он вернет ошибку, поскольку этот префикс не распознается. Таким образом, это должно быть сделано, как сказал dwestgate. public class BranchRequestData { [JsonProperty ("$ desktop_url")] public string desktop_url {get; задавать; } } – Tyson