0

こんにちは、これは私の Android クライアントの HTTP Post Request メソッドです。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/.

リンクlink2に従って

リクエストを 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. ベース URL マッピングは何ですか。あなたの 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 に答える