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", и это решило проблему.

Другие вопросы по тегам