因此,我在一些代碼上掙扎,任何幫助都會大受歡迎,在發佈問題之前我嘗試自己完成大部分工作,所以我向你保證我不是尋找某人爲我完成我的工作......只需要幫助讓它工作。在向服務器發送訂單時遇到問題
我有一個簡單的購物者應用程序,我試圖讓它發送訂單到數據庫,我檢查它是否通過檢查數據庫通過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.");
}
}
};
}
}
我剛剛添加了一個task.execute(url);在我的代碼的正確部分希望這將解決它...它似乎仍然不想工作。 – user3207096
我不知道更多的問題,但是如果你不執行任務,它將不會自行運行:-)。祝你好運! – ilomambo
無論如何謝謝你的幫助,我沒有注意到我沒有執行任務,所以你指出它是一件好事。我只是希望這會是問題,它會解決它。 乾杯雖然:) – user3207096