1

HTTP 接続を使用してサーバーにデータを投稿するアプリケーションを作成しています。エミュレーターで確認すると、アプリは正常に動作しています。Web サービスが応答を生成するのに時間がかかりすぎており、エミュレーターも適切に応答しています。どういうわけか、デバイスにアプリをインストールしたときに、アプリがサーバーにデータを 2 回投稿しています。私はそれをチェックしました...誰かがこれから脱出する方法について何か解決策を持っていますか???

ここに、送信リクエストのコードを添付します。HTTP タイムアウトに達したときにモバイル アプリが別のリクエストを送信していると思いますが、何が問題なのかわかりません。私を助けてください。

String param=
   "function=OpenRecharge&LoginId="+SharedVariable.getUserInfo().getLoginID()
              +"&BatchId="+SharedVariable.getSelectedProduct().getBatchID()
              +"&SystemServiceID="+SharedVariable.getSelectedProduct().getSystemServiceID()
              +"&ReferalNumber="+strMobileNo
              +"&Amount="+strAmount
              +"&FromANI="+fromMoNo
              +"&Email="
              +"&Checksum="+Checksum;
System.out.println("Final Parameter:\n"+param);

connection = (HttpConnection) Connector.open(url);

//Connector.open(param, strAmount, quit)
connection.setRequestMethod(HttpConnection.POST);
connection.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");
connection.setRequestProperty("Accept_Language","en-US");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

OutputStream out = connection.openOutputStream();
out.write(param.getBytes());

out.flush();
//System.out.println("Status Line Code: " + connection.getResponseCode());
//System.out.println("Status Line Message: " + connection.getResponseMessage());

is=connection.openDataInputStream();
int chr;
StringBuffer sb=new StringBuffer();
while ((chr = is.read()) != -1)
    sb.append((char) chr);

System.out.println("Response===>"+sb.toString());
4

2 に答える 2

1

私はアプリ開発者ではありませんが、Web サービスの応答に大きな遅延が発生することはありません。これはあなたの問題であり、解決する必要があると思います。キャッシュを作成するか、応答を前処理します。

タイムアウトは変更できますが (修正されているようです)、多くのモバイル (wap) プロキシのタイムアウトが 30 秒であるため、お勧めできません。

于 2012-02-28T19:12:24.653 に答える
1

「処理中...」などのプレースホルダー テキストを使用して回答を提供し、しばらくしてから Web ブラウザーに再試行してもらうことはできますか?

于 2012-05-28T14:47:37.850 に答える