2012-03-30 1 views
2

私はサーバーからいくつかのメソッドを使用したいアンドロイドアプリを実装しています(これは私によって実装されていませんでした)。私は唯一の文字列を渡す必要があります。http-ポストを作成しようとすると、すべてがのようなコードで正常に動作パラメータ:今Android - String以外のパラメータでHttp-Postを作成することはできますか?

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 

nameValuePairs.add(new BasicNameValuePair("user[email]", email)); 
nameValuePairs.add(new BasicNameValuePair("user[password]", password)); 

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

ResponseHandler<String> responseHandler=new BasicResponseHandler(); 
String responseBody = httpclient.execute(httppost, responseHandler); 
JSONObject response=new JSONObject(responseBody); 
System.out.println("RESPONSE " + response.toString()); 

私は簡単な属性を取るために使用することができますJSONオブジェクトとして応答を取得します私は望む。

これで、パラメーターとしてString以外の値(整数またはブール値)を必要とするメソッドがあります。私はList<NameValuePair>のようなリストでこれらの引数を渡すことができません。私はjsonオブジェクトとしてもそれを渡そうとしましたが、成功しませんでした。

私の最初の質問は、HTTPポストで非文字列パラメータを持つことが可能な場合ですか?そしてもしそうなら、どうすればいいのですか?たとえば、電子メールの上のコードで整数とパスワードがブール値(例の揺れ)であった場合、それらをどのように処理する必要がありますか?

ありがとうございました!

+0

文字列表現を渡すだけですか? –

+0

1の場合は「1」のような意味ですか?しかし、サーバーは私が思う整数を待つ。だから、私はこれが原因であると思うIO例外が発生します..非文字列またはhttp-postを渡すためのメソッドはありませんか? – george

+0

使用しようとしているサーバーリソースに送信する機能するWebページはありますか?もしそうなら、FirefoxのHttpFoxプラグインや別のトラフィックスニファのようなものを使って、成功したHTTPリクエストがどのようなものかを確認し、そのフォーマットを真似ることができますか? –

答えて

0

もちろん、ファイルのアップロードを検討してください。

ファイルがバイナリである(誰かが十分にバイナリにならないテキストを考慮すればOK、写真をアップロード考える)

技術は、すべてのHTTPリクエストパラメータが文字列としてでてくる

+0

はい私はそれを考えました..しかし、すべてが文字列として送信され、サーバからデコードされたかどうかわかりません。どうして非文字列のパラメータを渡すべきですか? – george

+1

このリンクは非常に便利です。ただし、URL接続を使用して通信します。http://stackoverflow.com/questions/2793150/how-to-use-java-net-urlconnection-to-fire-and-handle-http-requests –

+0

apiと契約を知る必要があります取得/投稿しているリソースの – Shellum

0

HTTPポストでありますしかし、サーバー側のコードはそれらを変換することができます。たとえば、サーバーはリクエストパラメータからJSON文字列を取得し、シリアル化されたデータを含むオブジェクトに変換することができます。これには整数、リストなどが含まれます。

実装はサーバーサイドコードに依存します。たとえば、クライアントとサーバーの両方で、GSONを使用してオブジェクトとリストを前後に送信できます。

public void doPost(...) 
{ 
    String param = request.getParameter("someParam"); 
    MyCustomObject myCustomObject = (MyCustomObject)gson.fromJson(param, MyCustomObject.class); 
} 
+0

このコードでは、サーバーから要求されたパラメータを文字列として取得し、必要な他の型としてフォームを作成しますか?その後、それをサーバーに渡す方法は?私は混乱しています.. – george

+0

"すべてのhttpリクエストパラメータは、文字列として来るでしょう"それはpost varのために間違っています。 urlパラメータのみが "string" –

+0

上記の例のように、request.getParameterを介してアクセスできるすべてのリクエストパラメータは、http://docs.oracleという文字列で提供されます。com/javaee/6/api/javax/servlet/ServletRequest.html – Shellum

関連する問題