2014-01-22 89 views
0

因此,我在一些代碼上掙扎,任何幫助都會大受歡迎,在發佈問題之前我嘗試自己完成大部分工作,所以我向你保證我不是尋找某人爲我完成我的工作......只需要幫助讓它工作。在向服務器發送訂單時遇到問題

我有一個簡單的購物者應用程序,我試圖讓它發送訂單到數據庫,我檢查它是否通過檢查數據庫通過Visual Studio發送。

問題是,我的應用程序可以正常工作,但在視覺工作室中沒有任何內容顯示它已收到訂單。我認爲我的代碼可能存在問題,並且發送訂單時遇到問題。

如果它有助於任何這是我的任務是問我要這個步驟做:

現在,我們需要在結帳活動工作,並提交爲了 服務器。轉到CheckoutActivity類並添加一個名爲 checkoutOrder()的新方法。在這個方法中,你應該定義一個AsyncTask然後執行它。 (注意:方法getApplication()可以直接調用 ,您已經在一個Activity中,因此您不需要使用「activity」對象作爲參數)。

下面是代碼我到目前爲止在結賬活動:

package uk.ac.uk.st265.shopper; 

    import java.io.ByteArrayOutputStream; 
    import java.io.InputStream; 
    import java.net.HttpURLConnection; 
    import java.net.URL; 

    import org.json.JSONObject; 

    import android.os.AsyncTask; 
    import android.os.Bundle; 
    import android.app.Activity; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.widget.TextView; 
    import android.support.v4.app.NavUtils; 

    public class CheckoutActivity extends Activity { 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_checkout); 
      // Show the Up button in the action bar. 
      setupActionBar(); 
     } 

     /** 
     * Set up the {@link android.app.ActionBar}. 
     */ 
     private void setupActionBar() { 

      getActionBar().setDisplayHomeAsUpEnabled(true); 

     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.checkout, menu); 
      return true; 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      switch (item.getItemId()) { 
      case android.R.id.home: 
       // This ID represents the Home or Up button. In the case of this 
       // activity, the Up button is shown. Use NavUtils to allow users 
       // to navigate up one level in the application structure. For 
       // more details, see the Navigation pattern on Android Design: 
       // 
       // http://developer.android.com/design/patterns/navigation.html#up-vs-back 

       NavUtils.navigateUpFromSameTask(this); 
       return true; 
      } 
      return super.onOptionsItemSelected(item); 
     } 

     protected void checkoutOrder() { 
      String url = String.format(MainActivity.WEBSERVER_PUTORDER, 
        ((ShopperApp) getApplication()).getOrderString()); 

      // start an async task to submit the order 
      AsyncTask<String, Void, JSONObject> task = new AsyncTask<String, Void, JSONObject>() { 

       @Override 
       protected JSONObject doInBackground(String... params) { 
        // Extract as JSON 
        JSONObject obj = null; 
        ByteArrayOutputStream bytestream = new ByteArrayOutputStream(); 
        try { 
         // the first parameter is the URL we should use 
         URL u = new URL(params[0]); 
         // establish the connection 
         HttpURLConnection conn = (HttpURLConnection) u 
           .openConnection(); 
         conn.connect(); 
         if (conn.getResponseCode() != 200) // it is not http ok 
                  // there is a problem on 
                  // the server 
          return null; 
         InputStream is = conn.getInputStream(); 

         // read the stream 
         byte[] buffer = new byte[1024]; 

         while (is.read(buffer) != -1) 
          bytestream.write(buffer); 

         // extract as JSON 
         String jsonStr = new String(bytestream.toByteArray()); 

         JSONObject Object = new JSONObject(jsonStr); 

         //obj = new JSONObject(jsonStr); 

         return obj; 


        } catch (Throwable t) { 
         t.printStackTrace(); 
        } 
        return obj; 

       } 

       @Override 
       protected void onPostExecute(JSONObject result) { 
        TextView resultText = (TextView)findViewById(R.id.text_results); 
        if (result != null) { 
         resultText.setText("Thank you for shopping with us! \n Your order has been placed."); 
         ((ShopperApp)getApplication()).cart.clear(); 
        } else { 
         resultText.setText("There seems to be a problem with your order."); 
        } 
       } 

     }; 
    } 
    } 

回答

0

我看到你創建的AsyncTask,但你永遠不執行它:

task.execute();

查看documentation on execute()。你會在頁面頂部找到一個代碼示例。

+0

我剛剛添加了一個task.execute(url);在我的代碼的正確部分希望這將解決它...它似乎仍然不想工作。 – user3207096

+0

我不知道更多的問題,但是如果你不執行任務,它將不會自行運行:-)。祝你好運! – ilomambo

+0

無論如何謝謝你的幫助,我沒有注意到我沒有執行任務,所以你指出它是一件好事。我只是希望這會是問題,它會解決它。 乾杯雖然:) – user3207096

相關問題