0

嗨,这是我在 Android 客户端中的 HTTP Post 请求方法。我不知道如何在 Restful Web 服务器中实现 @POST 方法。

public class AndroidHTTPRequestsActivity extends Activity
{
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Creating HTTP client
    HttpClient httpClient = new DefaultHttpClient();
    // Creating HTTP Post
    HttpPost httpPost = new HttpPost(
            "http://localhost:8080/GPS_Taxi_Tracker_Web_Server/resources/rest.android.taxi.androidclientlocation/Login");

    // Building post parameters
    // key and value pair
    List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
    nameValuePair.add(new BasicNameValuePair("email", "user@gmail.com"));
    nameValuePair.add(new BasicNameValuePair("message",
            "Hi, trying Android HTTP post!"));

    // Url Encoding the POST parameters
    try {
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
    } catch (UnsupportedEncodingException e) {
        // writing error to Log
        e.printStackTrace();
    }

    // Making HTTP Request
    try {
        HttpResponse response = httpClient.execute(httpPost);

        // writing response to log
        Log.d("Http Response:", response.toString());
    } catch (ClientProtocolException e) {
        // writing exception to log
        e.printStackTrace();
    } catch (IOException e) {
        // writing exception to log
        e.printStackTrace();

    }
}

java restful web服务中post方法的实现是什么,这是我的rest服务器代码有什么问题?

@POST
@Path("{Login}")
@Consumes({"application/xml"})
public void Add(@PathParam("email") String email,AndroidClientLocation entity) {
    entity.setEmail(email);
    super.create(entity);
}
4

2 回答 2

0

http://developer.android.com/tools/devices/emulator.html#networkaddresses

10.0.2.2 Special alias to your host loopback interface (i.e., 127.0.0.1 on your development machine)

http://localhost:8080/.

根据链接链接2

Send a request to localhost'的意思是把它发送到本地机器。在您的情况下,这将是 Android 设备。您想将请求发送到您的桌面计算机,即远程主机。问题是 Appengine dev_sever 默认情况下只绑定到本地地址,因此无法远程访问(即,从您的 Android 设备)。您需要传递 --address 选项才能从外部访问。检查您计算机的 IP 并将其作为地址传递。就像是:

dev_appserver.cmd --address=192.168.2.220

于 2012-06-22T18:24:57.720 回答
0

多问..

  1. 你在服务器端使用什么容器
  2. 您的基本网址映射是什么。您的 API 方法的路径是 Login,您如何将 URL 的剩余部分(/resources/rest.android.taxi.androidclientlocation)路由到 API。
  3. API 使用 application/xml 但客户端代码未发送/设置 Content-Type 为 application/xml,是否由客户端处理?
  4. 当您从客户端运行请求时,您得到的响应(HTTP 错误)是什么。
  5. 您的 REST 服务器在哪里运行(内部或外部)。

该问题的答案可能会更清楚地说明该请求。

于 2012-06-22T18:25:24.147 回答