Возможно, вашему серверу не нравится получать данные в виде поля с именем data
.
Этот курс полностью зависит от кода PHP, который мы не видим, так как вы не поделились этим часть. b
Но, по крайней мере, я могу вам сказать, что --data
или просто -d
в curl
относится ко всему разделу данных и не является полем с именем data
.
Вместо этого можно попробовать использовать MultiPartFormDataSection
, передавая только сами данные без указания c имени поля
var data = "{\"geneSetMembers\":[\"UST\"],\"geneSetName\":\"selection0\"}";
var form = new List<IMultiFormPart>{ new MultiPartFormDataSection(data) };
webRequest = UnityWebRequest.Post(url + route + to_say, form);
yield return webRequest.SendWebRequest();
, которое теперь отправляется как тип содержимого multipart/form-data
хотя ...
Другой вариант, если вашему серверу действительно нужно получить тип контента application/json
, может заключаться в том, чтобы "вручную" составлять запрос, например, как
var data = "{\"geneSetMembers\":[\"UST\"],\"geneSetName\":\"selection0\"}";
var request = new UnityWebRequest(url + route + to_say, "POST");
var bodyRaw = Encoding.UTF8.GetBytes(data);
request.uploadHandler = (UploadHandler) new UploadHandlerRaw(bodyRaw);
request.downloadHandler = (DownloadHandler) new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json");
yield return request.SendWebRequest();
Хотя сейчас вы смотрите внимательно, похоже, на самом деле это не так, поскольку если вы читаете man curl
(HTTP) Отправляет указанные данные в POST-запрос к HTTP-серверу так же, как браузер, когда пользователь заполнил форму HTML и нажал кнопку отправки. Это заставит curl передавать данные на сервер, используя тип контента application / x- www-form-urlencoded
, который фактически является типом контента по умолчанию, используемым простым string
версия UnityWebRequest.Post
.
Так что подумать об этом на самом деле должно быть так же просто, как использовать чистую string
версию UnityWebRequest.Post
:
var data = "{\"geneSetMembers\":[\"UST\"],\"geneSetName\":\"selection0\"}";
var request = UnityWebRequest.Post(url + route + to_say, data);
yield return request.SendWebRequest();