Silverlight/XAML – Learning by Coding
1: <?xml version="1.0" encoding="UTF-8"?>
2: <!-- coded by Thomas Meinike 08/08 -->
3: <UserControl x:Class="sl2_httpwebrequest.Page"
4: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
5: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
6: Width="800" Height="600">
7:
8: <Canvas>
9: <Button Canvas.Left="30" Canvas.Top="30" Content="POST-Request ..." Padding="10"
10: Cursor="Hand" x:Name="aktion"/>
11: <TextBlock Canvas.Left="150" Canvas.Top="40" Text="..." x:Name="ergebnis"/>
12: </Canvas>
13:
14:
15: <!-- // zusätzlich verwendeter VB.NET-Code in Page.xaml.vb:
16:
17: Imports System.IO
18: Imports System.Net
19: Imports System.Threading
20:
21: Partial Public Class Page
22: Inherits UserControl
23: Public Shared syncContext As SynchronizationContext = New SynchronizationContext()
24:
25: Public Sub New()
26: InitializeComponent()
27: AddHandler aktion.Click, AddressOf BtnClick
28: End Sub
29:
30: Private Sub BtnClick(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
31: syncContext = SynchronizationContext.Current
32: Dim address As Uri = New Uri("http://example.net/postwebreq.php", UriKind.Absolute)
33: Dim request As HttpWebRequest = DirectCast(WebRequest.Create(address), HttpWebRequest)
34: request.Method = "POST"
35: request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"
36: request.BeginGetRequestStream(New AsyncCallback(AddressOf HandleRequest), request)
37: End Sub
38:
39: Public Sub HandleRequest(ByVal result As IAsyncResult)
40: Dim request As HttpWebRequest = DirectCast(result.AsyncState, HttpWebRequest)
41: Dim requeststream As Stream = request.EndGetRequestStream(result)
42: Dim requestwriter As New StreamWriter(requeststream)
43: requestwriter.Write("param1=wert1" + "&")
44: requestwriter.Write("param2=wert2")
45: requestwriter.Flush()
46: requestwriter.Close()
47: request.BeginGetResponse(New AsyncCallback(AddressOf HandleResponse), request)
48: End Sub
49:
50: Public Sub HandleResponse(ByVal result As IAsyncResult)
51: Dim request As HttpWebRequest = DirectCast(result.AsyncState, HttpWebRequest)
52: Dim response As HttpWebResponse = DirectCast(request.EndGetResponse(result), HttpWebResponse)
53: syncContext.Post(AddressOf UseResponse, response)
54: End Sub
55:
56: Public Sub UseResponse(ByVal state As Object)
57: Try
58: Dim response As HttpWebResponse = DirectCast(state, HttpWebResponse)
59: If response.StatusCode = HttpStatusCode.OK Then
60: Dim responsestream As Stream = response.GetResponseStream()
61: Dim responsereader As New StreamReader(responsestream)
62: Dim responsestring As String = responsereader.ReadToEnd()
63: responsereader.Close()
64: response.Close()
65: ergebnis.Text = responsestring
66: End If
67: Catch e As Exception
68: ergebnis.Text = e.Message
69: End Try
70: End Sub
71:
72: End Class
73:
74: -->
75:
76:
77: <!-- // zusätzlich verwendeter PHP-Code in postwebreq.php:
78:
79: <?php
80: header("Content-Type: text/plain; charset=UTF-8");
81:
82: $param1=htmlspecialchars($_POST["param1"]);
83: $param2=htmlspecialchars($_POST["param2"]);
84:
85: print "Es wurden $param1 und $param2 gesendet.";
86: ?>
87:
88: -->
89:
90: </UserControl>
[zum Anfang]