-2

データベースに保存するデータをサーバーに送信するHttpPostがあります。そのデータが正常に保存されると、「メッセージは正常に保存されました」という応答がLogCatに表示されます(この応答はPHPコードで定義されています)。私はそれに満足していますが、トーストに表示されるのと同じ応答を得ようとしています。これが私のコードです:

String myBreadfromr, myBreadtor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    Bundle myBasket = getIntent().getExtras();
    myBreadfromr = myBasket.getString("keyfromcellr");
    myBreadtor = myBasket.getString("keytocellr");
    new SendData().execute("");
}

public class SendData extends AsyncTask<String, Integer, Void> {

    protected void onPreExecute(String f) {
        // called before doInBackground has started
        f = "f";
    }

    protected Void doInBackground(String... params) {
        // TODO Auto-generated method stub
        // Create a new HTTP client
        HttpClient client = new DefaultHttpClient();
        // Create a new HTTP Post
        HttpPost post = new HttpPost("http://192.xxx.xxx.xxx/androidp2p/process.php");
        try {
            // Add the data
            List<NameValuePair> pairs = new ArrayList<NameValuePair>(3);
            pairs.add(new BasicNameValuePair("from", myBreadfromr));
            pairs.add(new BasicNameValuePair("to", myBreadtor));
            pairs.add(new BasicNameValuePair("message", "What is your location?"));
            // Encode Post data into valid URL format
            post.setEntity(new UrlEncodedFormEntity(pairs));
            // Go back to the first page
            Intent back2start = new Intent(RequestLocation.this, StartApp.class);
            startActivity(back2start);
            // Make the HTTP Post Request
            HttpResponse response = client.execute(post);
            // Convert the response into a String
            final HttpEntity resEntity = response.getEntity();
            // Write the response to a log file
            if (resEntity != null) {
                Log.i("RESPONSE", EntityUtils.toString(resEntity));
            }
            runOnUiThread(new Runnable(){
                   public void run() {
                        Toast.makeText(RequestLocation.this, resEntity.toString(), Toast.LENGTH_LONG).show();
                   }
            });
        } catch (UnsupportedEncodingException uee) {
            uee.printStackTrace();
        } catch (ClientProtocolException cpe) {
            cpe.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        return null;
    }

    protected void onProgressUpdate(Integer... progress) {
        // called when the background task has made any progress
    }

    protected void onPostExecute() {
        // called after doInBackground has finished
    }
}

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
}

代わりにトーストに表示されるのは、「org.apache.http.conn.BasicManagedEntity@41284b48」です。

この問題の解決にご協力いただき、誠にありがとうございます。

4

1 に答える 1

0

EntityUtils.toString(resEntity)トーストで使用して、同じテキストを取得します。

runOnUiThreadまた、を呼び出す必要はなく、doInBackgroundではなく何かを返す必要があります。また、UIスレッドですでに実行されてnullいる何かが利用可能になります。onPostExecute

AsyncTask

于 2013-03-24T07:28:27.937 に答える