Httpclient PostAsync возвращает 404. Веб-сервер получает все почтовые данные в хорошем порядке и завершен
Это то, что у меня есть
using Windows.Web.Http;
using Windows.Web.Http.Headers;
public async static Task<bool> FormPost(List<KeyValuePair<string, string>> varvaluepair, string hosturl)
{
try
{
Uri cURI;
if (Uri.TryCreate(hosturl, UriKind.Absolute, out cURI) && (cURI.Scheme == "http" || cURI.Scheme == "https"))
{
var client = new HttpClient();
client.DefaultRequestHeaders.UserAgent.ParseAdd("ie");
client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");
var content = new HttpFormUrlEncodedContent(varvaluepair);
content.Headers.ContentType = new HttpMediaTypeHeaderValue("application/x-www-form-urlencoded");
var response = await client.PostAsync(cURI, content);
if (response.IsSuccessStatusCode)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
catch (Exception ex)
{
return false;
вот что я получил из ответа:
{StatusCode: 404, ReasonPhrase: 'Not Found', Version: 2, Content: Windows.Web.Http.HttpStreamContent, Headers:
{
Connection: keep-alive
Server: nginx admin
Date: Sun, 11 May 2014 15:46:32 GMT
}{
Content-Length: 335
Content-Type: text/html; charset=iso-8859-1
}} Windows.Web.Http.HttpResponseMessage
мой хост получает значение submit и все работает отлично, за исключением ответа 404 и функции, возвращающей false вместо true.
Вот как я отправляю:
string tmpAddress = "http://www.somewhere.com";
var tmpData = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("Name", "Jibah xxxxxxxxxxxx"),
new KeyValuePair<string, string>("Email", "jibah.kxxxxx@xxxx.com"),
new KeyValuePair<string, string>("Feedback", "Test submission to see the response"),
new KeyValuePair<string, string>("form_tools_form_id", "225")
};
bool tmpResult = await FormPost(tmpData, tmpAddress);
и результат с сайта Formtool (я не могу опубликовать изображение) захват изображения
Извините за мой английский. Благодарю.
1 ответ
Я не уверен, что это правильный способ показать мои выводы (кто-то, пожалуйста, поправьте меня, исправьте этот ответ)
Его нет в коде C#. response
это не то, что PostAsync
отправить, но то, что было отправлено службой, называется. Служба работает нормально для получения, но возвращает страницу перенаправления, которая не существует. Это проблема Formtool.
В Formtool есть настройка для возврата URL перенаправления, когда форма отправляется и принимается Formtool. URL перенаправления, установленный в Formtool, действительно был страницей, которая не существует, следовательно, 404.