Reputation: 5961
I have a program where users input a complete URL with URL-encoded query string, and it send that to the web.
I am using the httpwebrequest in vb2005
I get an error from the websites saying that I should send a content length
if the URL is http://www.someurl.com/query.php?q=somtext¶m1=paramtext¶m2=paramtext2
how do I get the content length from a URL, as there is no way to know this automatically?
EDIT
i decided to use this, is this correct
Private Function GetHtmlFromUrl(ByVal url As String, _
Optional ByVal PostData As String = vbNullString) As String
If url.ToString() = vbNullString Then
Throw New ArgumentNullException("url", "Parameter is null or empty")
End If
Dim html As String = vbNullString
Dim myUrl As New System.Uri(url)
Dim request As HttpWebRequest = WebRequest.Create(url)
With request
.ContentType = "Content-Type: application/x-www-form-urlencoded"
.Method = "POST"
.UserAgent = "Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)"
.Referer = "http://www.google.com"
.ContentLength = myUrl.Query.Length
End With
Try
Dim response As HttpWebResponse = request.GetResponse()
Dim reader As StreamReader = New StreamReader(response.GetResponseStream())
html = Trim$(reader.ReadToEnd)
Return html
Catch ex As WebException
Return ex.Message
End Try
End Function
Upvotes: 0
Views: 377
Reputation: 14517
The problem is that you are specifying method "POST", but passing the arguments as the URL is a "GET". You either need to use the GET method or you need to perform a POST (write the parameters to the request stream).
http://www.codeproject.com/KB/webservices/HttpWebRequest_Response.aspx
Upvotes: 1