我的代码在邮递员工具中有效,但在android项目中无效

时间:2019-06-04 01:10:47

标签: android

我想发出http发布请求以将一些数据发布到google sheet,但是我的代码无法正常工作,尽管没有错误。

我试图用邮递员工具发出请求,并且相同的代码在另一个项目中也能正常工作

public class NewNurseLoader extends AsyncTaskLoader {
    String uriBuilder;

    public NewNurseLoader(Context context, String uriBuilder) {
        super(context);
        this.uriBuilder = uriBuilder;
    }

    @Override
    public Object loadInBackground() {
        Log.i(getClass().getName(), "loadInBackground() called");
        HttpsURLConnection httpsURLConnection = null;
        try {
            URL url = new URL(this.uriBuilder);
            httpsURLConnection = (HttpsURLConnection) url.openConnection();
            httpsURLConnection.setRequestMethod("POST");
            httpsURLConnection.setDoOutput(true);
            Log.i(getClass().getName(), "loadInBackground() done" + NewNurseActivity.nurseMobile);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            httpsURLConnection.disconnect();
        }
        return null;
    }
}


public Loader onCreateLoader(int id, Bundle args) {
            String uriString = "https://script.google.com/macros/s/AKfycbzv9ceXQybWwE24Lu6dtS4xJyXLsg3bW0iY0qH4JQyWrd2WdcyV/exec";
            Uri baseUri = Uri.parse(uriString);
            Uri.Builder uriBuilder = baseUri.buildUpon();
            uriBuilder.appendQueryParameter("name", nurseName);
            uriBuilder.appendQueryParameter("idNumber", nurseID);
            uriBuilder.appendQueryParameter("mobileNumber", nurseMobile);
            return new NewNurseLoader(this, uriBuilder.toString());
    }

    @Override
    public void onLoadFinished(Loader loader, Object data) {
        startActivity(new Intent(NewNurseActivity.this, MapsActivity.class));
    }

    @Override
    public void onLoaderReset(Loader loader) {

    }

这是我的.gs代码

function doPost(e){
  var id  = sheet.getLastRow(); // Item1
  var firstName = e.parameter.firstName;
  var secondName = e.parameter.secondName;
  var lastName = e.parameter.lastName;
  var age = e.parameter.age;
  var mobileNumber = e.parameter.mobileNumber;
  var idNumber = e.parameter.idNumber;
  var gender = e.parameter.gender;

  sheet.appendRow([id, firstName, secondName, lastName, age, mobileNumber, idNumber, gender]);

我希望数据应该添加到Google工作表中,但实际上不是这样

1 个答案:

答案 0 :(得分:0)

您将数据发送到哪里?打开UrlConnection之后,必须在try子句中发送数据。然后,就像您一样在catch子句中处理异常。我看不到您发送数据,但打开了UrlConnection并关闭了它。我想念什么?

 try {
            URL url = new URL(this.uriBuilder);
            httpsURLConnection = (HttpsURLConnection) url.openConnection();
            httpsURLConnection.setRequestMethod("POST");
            httpsURLConnection.setDoOutput(true);
            //==>Here you have to send your data
            Log.i(getClass().getName(), "loadInBackground() done" + NewNurseActivity.nurseMobile);
        } catch (MalformedURLException e) {