我正在开发一个Android项目。我是android编程的新手。如何从我的项目向谷歌应用引擎发送HTTP发布请求?我搜索并发现此代码用于从android发送请求,但它无法正常工作。以下是我正在使用的代码:
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.example.com/servleturl");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", userEmailStr));
nameValuePairs.add(new BasicNameValuePair("password", userPasswordStr));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
info.setText(response.toString());
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
提前感谢您的帮助。
答案 0 :(得分:1)
这是我在java中用于http请求的类:
public class WSConnector {
final String baseUrl = "http://www.myURL.com/"; //this is the base url of your services
String realUrlWithParams="";
String realUrl="";
String params = "";
String charset = "UTF-8";
HttpURLConnection connection = null;
public WSConnector(String serviceName,String params,String charset){ //we create the connector with everything we need (params must be ready as value pairs, serviceName is the name of your service):
if (charset!=null){
this.charset = charset;
}
this.realUrlWithParams = baseUrl+serviceName+"?"+params;
this.realUrl = baseUrl+serviceName;
}
public String getResponse(){//getResponse will get your the entire response String
String result = "";
System.out.println("trying connection");
try {
connection = (HttpURLConnection) new URL(realUrlWithParams).openConnection();
//connection.setRequestProperty("Accept-Charset", charset);
int status = connection.getResponseCode();
System.out.println("status:"+status);
if (status==HttpURLConnection.HTTP_OK){
InputStream responseStream = connection.getInputStream();
BufferedReader reader = null;
reader = new BufferedReader(new InputStreamReader(responseStream));
for (String line; (line = reader.readLine()) != null;) {
System.out.println("line is:" +line);
result = result+line;
System.out.println("result is:"+result);
}
}
} catch (MalformedURLException e) {
System.out.println("ERROR IN CONNECTOR");
e.printStackTrace();
} catch (IOException e) {
System.out.println("ERROR IN CONNECTOR");
e.printStackTrace();
}
System.out.println("finished connection");
return result;
}
如果想了解更多,请访问此CW:
答案 1 :(得分:1)
我没有允许我的应用用户使用互联网。为此,我们只需要在AndroidManifest.xml中添加此行。
<uses-permission android:name="android.permission.INTERNET" />
答案 2 :(得分:0)
在app引擎上使用restlet(http://wiki.restlet.org/docs_2.0/13-restlet/21-restlet.html)来处理http请求进来。这通常不是app的方式使用引擎,但它可以满足您的需求。
在andoid中,只需在相应的网址上执行正常的http请求(http://stackoverflow.com/questions/1359689/how-to-send-http-request-in-java)。
您应该能够从restlet教程中找出如何设置url。部署到应用引擎后,网址将类似于http://myapp.appspot.com/goodstuff
祝你好运!