Как я могу опубликовать значение на онлайн-странице, а затем получить ответ, чтобы поместить его в строку? Это PHP-страница, которая принимает значение $_POST
, а затем выводит ответ, который я хочу получить.
Windows phone 7: отправить некоторые значения, получить ответ
Ответы (1)
Посмотрите на HttpWebRequest.
public void DoWork()
{
var url = "http://posttestserver.com/post.php";
// Create the web request object
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
// Start the request
webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
}
void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
// End the stream request operation
Stream postStream = webRequest.EndGetRequestStream(asynchronousResult);
// Create the post data
// Demo POST data
string postData = "Username=MyUserName&password=MyPassword";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Add the post data to the web request
postStream.Write(byteArray, 0, byteArray.Length);
postStream.Close();
// Start the web request
webRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), webRequest);
}
void GetResponseCallback(IAsyncResult asynchronousResult)
{
try
{
HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response;
// End the get response operation
response = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamReader = new StreamReader(streamResponse);
var Response = streamReader.ReadToEnd();
streamResponse.Close();
streamReader.Close();
response.Close();
}
catch (WebException e)
{
// Error treatment
// ...
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
DoWork();
}
его код немного адаптирован из этого вопроса
person
ZombieSheep
schedule
15.06.2011
хорошо, я думаю, это работает. но где я могу получить свой ответ? если я использую: var Response = streamReader.ReadToEnd(); MessageBox.Show(Response.ToString()); я получаю сообщение об ошибке
- person Zak; 16.06.2011
streamReader.ReadToEnd() уже возвращает строку, поэтому .ToString() является избыточным. Предполагая, что вы создаете MessageBox в методе GetResponseCallback(), имейте в виду, что вы находитесь в новом потоке, поэтому, чтобы открыть окно сообщения, вам нужно вызвать его как
Dispatcher.BeginInvoke(() => MessageBox.Show(Response));
- person ZombieSheep; 16.06.2011
Да, ты прав! :-P, но теперь, последний вопрос, чтобы понять эту вещь, как я могу прикрепить значение поля к данным сообщения? я сделал это, но получаю сообщение об ошибке: string postData = language=en&value= + testo.Text;
- person Zak; 17.06.2011
как я могу поместить значение textBox в строки сообщения??? я получаю сообщение об ошибке недопустимого поперечного потока
- person Zak; 21.06.2011
Вы можете либо сохранить значение в строке перед вызовом фонового потока (простой способ), либо использовать диспетчер для получения значения внутри метода. См. stackoverflow.com/questions/710034/ для примеров. Извините, я не могу дать вам код напрямую, так как сейчас в отпуске. :)
- person ZombieSheep; 21.06.2011
Возможно, отметьте этот ответ как принятый и спросите еще раз в новом вопросе. Как я уже сказал, я в отпуске, поэтому не могу дать вам ответ, но запуск нового вопроса для этой дополнительной информации даст вам больше ответов.
- person ZombieSheep; 21.06.2011