-
March 26th, 2008, 06:04 PM
#1
WebRequest -="The request was aborted: The request was canceled."
when i send an xml to a server using WebRequest object (i am sending a paramater+xml in size of about 250 chars)
i recve an error :
System.Net.WebException was unhandled
Message="The request was aborted: The request was canceled."
and the inner exception is :{"Cannot close stream until all bytes are written."}
this happens row 63 ==>>SW.Close()
as i understand this , the request to the server didnt finish the sending and its being closed!
how can i prevent this?
Code:
1 Public Shared Function Send(ByVal URL As String, _
2
3 Optional ByVal PostData As String = "", _
4
5 Optional ByVal Method As HTTPMethod = HTTPMethod.HTTP_GET, _
6
7 Optional ByVal ContentType As String = "")
8
9 Dim Request As HttpWebRequest = WebRequest.Create(URL)
10
11 Dim Response As HttpWebResponse
12
13 Dim SW As StreamWriter
14
15 Dim SR As StreamReader
16
17 Dim ResponseData As String
18
19 ' Prepare Request Object
20
21 Request.Method = Method.ToString().Substring(5)
22
23 ' Set form/post content-type if necessary
24
25 If (Method = HTTPMethod.HTTP_POST AndAlso PostData <> "" AndAlso ContentType = "") Then
26
27 ContentType = "application/x-www-form-urlencoded"
28
29 End If
30
31 ' Set Content-Type
32
33 If (ContentType <> "") Then
34
35 Request.ContentType = ContentType
36
37 Request.ContentLength = PostData.Length
38
39 End If
40
41 'Dim bytes As Byte() = System.Text.Encoding.UTF8.GetBytes(PostData)
42
43 ' Send Request, If Request
44
45 If (Method = HTTPMethod.HTTP_POST) Then
46
47 Try
48
49 SW = New StreamWriter(Request.GetRequestStream())
50
51 SW.Write("XML=" & RepalceData(PostData))
52
53 Catch Ex As Exception
54
55 Throw Ex
56
57 MsgBox(Ex.Message)
58
59 '
60
61 Finally
62
63 SW.Close()
64
65 End Try
66
67 End If
68
69 ' Receive Response
70
71 Try
72
73 Response = Request.GetResponse()
74
75 SR = New StreamReader(Response.GetResponseStream())
76
77 ResponseData = SR.ReadToEnd()
78
79 MsgBox(ResponseData)
80
81 Catch Wex As System.Net.WebException
82
83 SR = New StreamReader(Wex.Response.GetResponseStream())
84
85 ResponseData = SR.ReadToEnd()
86
87 Throw New Exception(ResponseData)
88
89 Finally
90
91 SR.Close()
92
93 End Try
94
95 Return ResponseData
96
97 End Function
98
99
100 Public Shared Function RepalceData(ByRef data)
101
102 data = Replace(data, "%", "%25")
103
104 data = Replace(data, " ", "%20")
105
106 data = Replace(data, "#", "%23")
107
108 data = Replace(data, "&", "%26")
109
110 data = Replace(data, "?", "%3F")
111
112 data = Replace(data, "+", "%2B")
113
114 RepalceData = data
115
116 End Function
117
thnaks i nadvance
peleg
-
December 11th, 2009, 01:43 PM
#2
Re: WebRequest -="The request was aborted: The request was canceled."
Have you tried 'SW.Flush()' before the 'SW.Close()' call?
-
March 15th, 2010, 05:13 AM
#3
Re: WebRequest -="The request was aborted: The request was canceled."
The cancellation is originating from your SOAP client. Usually from the length of the encoded packet not equally that actual encoded length of the packet. The error is a bit of a red-herring.
You need to set the lenth of of the pack request, to the encoded length. You'll find you only get the error when you try to send extended characters (> ascii 128)
I blogged about it here.
http://01792.org/blog/post/2010/03/1...ebRequest.aspx
-
March 15th, 2010, 05:36 AM
#4
Re: WebRequest -="The request was aborted: The request was canceled."
thnaks both of you
the 'SW.Flush()' was the reason,
and i added the comment of miloTheGreat .
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|