我正在尝试通过POST请求将Android中的数据发送到Google Spreadsheet中的脚本。我没有收到任何错误,但请求似乎没有通过。
我已经尝试了here
提供的一些解决方案我用一种简单的形式尝试了该脚本,并且可以运行,但是从android看来,似乎什么都没有尝试。
我为此使用2个类,一个扩展了AppCompatActivity
,另一个扩展了AsyncTask
public class FormActivity extends AppCompatActivity {
// STUFF
private void sendData() {
// Post Request
int data1 = SOMEDATA1;
int data2= SOMEDATA2;
String sdata1 = Integer.toString(data1 );
String sdata2 = Integer.toString(data2);
String urlString = MYSCRIPTURL; // URL to call
String data = "data1=" + data1 + "&data2=" + data2 ; //data to post
MyAsyncTask myAsyncTask = new MyAsyncTask();
myAsyncTask.execute(urlString, data);
}
}
这是应该执行POST请求的类
public class MyAsyncTask extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
String urlString = params[0]; // URL to call
String data = params[1]; //data to post
OutputStream out = null;
try {
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("POST");
out = new BufferedOutputStream(urlConnection.getOutputStream());
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
writer.write(data);
writer.flush();
writer.close();
out.close();
urlConnection.connect();
} catch (Exception e) {
System.out.println(e.getMessage());
}
return null;
}
}
我还添加了
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
到清单。
这似乎一直运行到最后,但是在脚本侧面,日志什么都没有显示。
我链接的问题的答案中的方法doInBackground
是无效的,但是Android Studio仅接受它作为字符串。除此之外,还有一些补充代码是相同的。
编辑:我也尝试使用GET,不起作用。