我想发出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工作表中,但实际上不是这样
答案 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) {