2013-09-08 1 views
2

Я использовал программу python для загрузки данных в погоду под землей, а затем без какой-либо явной причины она перестала работать в один прекрасный день. Я создал следующую меньшую версию, чтобы попытаться решить проблему.У меня возникли трудности с загрузкой данных в подземелье из моей программы python

Эта программа возвращает «загрузить не удалось»

Интересно, если я беру путь и Http адрес и поместить их в моем браузере он проходит успешно Это значит для меня, что пароль и идентификатор станции в порядке, там это еще одна вещь, блокирующая успешную передачу.

Вот программа:

import subprocess 

import re 

import sys 

import time 

from datetime import datetime 

from time import sleep 

import httplib 

import smbus 

import math 
stationid = "xxxxxx" 

password = "xxxxx" 

temperature= 78.2 

conn = httplib.HTTPConnection("rtupdate.wunderground.com") 

path ="/weatherstation/updateweatherstation.php?ID=" + stationid + "&PASSWORD=" + password + "&dateutc=" + str(datetime.utcnow()) + "&tempf=" + str(temperature) + "&softwaretype=RaspberryPi&action=updateraw&realtime=1&rtfreq=2.5" 

conn.request("GET", "path") 

print path 

sleep(2) 

res = conn.getresponse() 

     # checks whether there was a successful connection (HTTP code 200 and content of page contains "success") 

if ((int(res.status) == 200) & ("success" in res.read())): 

    print "Successful Upload" 

    print "Temperature F=", temperature 

else: 

    print "%s -- Upload not successful, check username, password, and formating.. Will try again in 6 seconds" 

    print "TempF =", temperature 

Если я запускаю это с командой, чтобы напечатать ответ и причину, я получаю следующее:

(404, 'Not Found') 

<html><head><title>404 Not Found</title><head><body><h1>Not Found</h1>The requested URL <code>path</code> was not found on this server.<br></body></html 

Если взять компоненты:

http://rtupdate.wunderground.com/weatherstation/updateweatherstation.php?ID=xxxxxx&PASSWORD=xxxxxx&dateutc=2013-09-07 23:20:30.920773&tempf=78.2&softwaretype=RaspberryPi&action=updateraw&realtime=1&rtfreq=2.5 

и положить это в браузер и запустить его, он отлично работает ??

Может ли кто-нибудь сказать мне, что здесь происходит?

+0

Я получаю INVALIDPASSWORDID | Пароль и/или идентификатор неверны –

ответ

1

Я был в состоянии получить код для работы путем внесения следующих изменений:

+ conn.request("GET", "path") should be conn.request("GET", path) 
#notice path should be a variable 
+ you need to escape the date in query string (I used urllib.quote): 
path ="/weatherstation/updateweatherstation.php?ID=" + stationid + "&PASSWORD=" + password + "&dateutc=" + urllib.quote(str(datetime.utcnow())) + "&tempf=" + str(temperature) + "&softwaretype=RaspberryPi&action=updateraw&realtime=1&rtfreq=2.5" 

сниппета:

conn = httplib.HTTPConnection("rtupdate.wunderground.com") 

path ="/weatherstation/updateweatherstation.php?ID=" + stationid + "&PASSWORD=" + password + "&dateutc=" + urllib.quote(str(datetime.utcnow())) + "&tempf=" + str(temperature) + "&softwaretype=RaspberryPi&action=updateraw&realtime=1&rtfreq=2.5" 
conn.request("GET", path) 
+0

Это было именно то, что Мне было нужно. Я уже исправил проблему с путём, и я просто испортил свой пост ... Но использование url lib и url lib.quote работало точно так же, как вы предсказали. Я не могу поблагодарить вас за то, что решил трехнедельную борьбу за обнаружение исправления. – user2757954