vb.net OpenWeatherMap с использованием HttpWebRequest
Я не могу заставить HttpWebRequest правильно работать с OpenWeatherMap.
Когда я пробую URL из браузера, я получаю данные. Однако, когда я отправляю его из программы, я получаю сообщение с идентификатором кода. Как это:
"message":"","cod":"404"
Что я делаю неправильно?
Код VB.NET:
Private Shared AppID As String = "add_app_id_Here"
Public Shared Function GetWeather(ByVal location As String) As List(Of WeatherDetails)
Dim url = String.Format _
("http://api.openweathermap.org/data/2.5/forecast/daily?q={0}&type=accurate&mode=xml&units=metric&cnt=3&appid={1}",
location, AppID)
Try
Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
request.AuthenticationLevel = Net.Security.AuthenticationLevel.None
Dim response As WebResponse = request.GetResponse()
'The body of the request is sent here
Dim responseReader As New StreamReader(response.GetResponseStream())
Dim responseInfo As String = responseReader.ReadToEnd()
responseReader.Close()
response.Close()
If Not (responseInfo.Contains("message") And responseInfo.Contains("cod")) Then
Dim xEl = XElement.Load(New System.IO.StringReader(responseInfo))
Return GetWeatherInfo(xEl)
Else
Return New List(Of WeatherDetails)
End If
Catch ex As Exception
Return New List(Of WeatherDetails)
End Try
End Function
1 ответ
После того, как я сломал голову, я обнаружил, что его метод HttpWebRequest не допускает использование специальных символов или непечатаемых символов. Таким образом, в URL я должен был жестко закодировать символ "%27", и это решило проблему.