Android应用通过POST将数据上传到python服务器
我已经成功地把这个从安卓移植到了谷歌应用引擎上的Java HttpServlet,但我想用Python来做服务器端。对Python我还是个新手,有人做过这个吗?我已经把留言簿的例子搞定了,但就是无法从我的安卓应用发送帖子到服务器。
我还想给客户端返回一个字符串,比如“成功”。
如果能有人指导一下我就太好了。
谢谢
***客户端Java:
URL url = new URL(Const.SERVER_NAME);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(
connection.getOutputStream()
);
out.write("content=12345");
out.close();
***服务器端Python:
class Upload(webapp.RequestHandler):
def post(self):
greeting.content = self.request.get('content')
greeting.put()
***服务器端Java(可用)
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
try {
String instring = request.getParameter("content")
// set the response code and write the response data
response.setStatus(HttpServletResponse.SC_OK);
OutputStreamWriter writer = new OutputStreamWriter(response.getOutputStream());
writer.write("Success");
writer.flush();
writer.close();
} catch (IOException e) {
try{
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
response.getWriter().print(e.getMessage());
response.getWriter().close();
} catch (IOException ioe) {
}
}
1 个回答
4
我知道这已经过了很长时间。但我解决了这个问题,所以我来分享一下我的解决方案。
这是安卓的代码:
url = new URL(SERVER_URL);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(
connection.getOutputStream());
String post_string;
post_string = "deviceID="+tm.getDeviceId().toString();
// send post string to server
out.write(post_string);
out.close();
//grab a return string from server
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
Toast.makeText(context, in.readLine(), Toast.LENGTH_SHORT).show();
这是使用Django和GAE的Python服务器端代码:
def upload(request):
if request.method == 'POST':
deviceID = measurement.deviceID = str(request.POST['deviceID'])
return HttpResponse('Success!')
else:
return HttpResponse('Invalid Data')