[英]HTTP Get/Post on Android doesn't work with Google Apps Script
我寫了一個Google Apps腳本來接收數據並將其存儲在電子表格中,如下所示:
https://script.google.com/macros/s/.../exec?t1=hi&t2=foo
該URL在瀏覽器上運行良好,並且確實存儲了數據。 但是,當我嘗試從Android應用程序實現此功能時,它不起作用。 我已經在AsyncTask中嘗試了HttpGet
和HttpPost
技術,卻一無所獲。 這是HttpPost的代碼:
class sendData extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
String [] data = params[0].split("-");
postData(data[0],data[1]);
}
@Override
protected void onPostExecute(String result) {
// Update Ui here
}
public void postData(String l1, String l2) {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://script.google.com/macros/s/.../exec");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("test", l1));
nameValuePairs.add(new BasicNameValuePair("testt", l2));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
}
問題可能在哪里? 我已經將腳本和電子表格的隱私設置為任何人都可以訪問和編輯,並且仍然沒有響應。
這是logcat。 不知道這是否意味着:
07-25 00:17:36.400: D/dalvikvm(31262): Late-enabling CheckJNI
07-25 00:17:36.415: I/dalvikvm(31262): Turning on JNI app bug workarounds for target SDK version 10...
07-25 00:17:36.420: E/jdwp(31262): Failed sending reply to debugger: Broken pipe
07-25 00:17:36.420: D/dalvikvm(31262): Debugger has detached; object registry had 1 entries
07-25 00:17:40.930: D/dalvikvm(31262): GC_CONCURRENT freed 220K, 7% free 12377K/13191K, paused 5ms+2ms, total 28ms
07-25 00:17:42.075: D/dalvikvm(31262): GC_CONCURRENT freed 314K, 7% free 12517K/13447K, paused 9ms+3ms, total 67ms
07-25 00:17:44.850: D/dalvikvm(31262): GC_CONCURRENT freed 341K, 7% free 12630K/13575K, paused 12ms+3ms, total 34ms
07-25 00:17:59.815: D/dalvikvm(31262): GC_CONCURRENT freed 435K, 8% free 12638K/13703K, paused 2ms+2ms, total 26ms
07-25 00:18:05.000: D/dalvikvm(31262): GC_CONCURRENT freed 380K, 8% free 12693K/13703K, paused 15ms+5ms, total 54ms
07-25 00:18:15.030: D/dalvikvm(31262): GC_CONCURRENT freed 366K, 8% free 12776K/13767K, paused 19ms+2ms, total 61ms
07-25 00:18:56.390: E/SpannableStringBuilder(31262): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
07-25 00:18:56.390: E/SpannableStringBuilder(31262): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
我敢打賭,您尚未以公開和匿名方式發布該appscript服務。 還要確保使用ContentSevice。
我發現了另一種“較少編碼”的方式,可以使用URL
和HttpURLConnection.openConnection()
來獲取我的Google Apps腳本以讀取我的輸入:
try {
URL url = new URL("https://script.google.com/macros/s/.../exec?t1=hi&t2=foo");
HttpURLConnection con = (HttpURLConnection) url
.openConnection();
readStream(con.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
private void readStream(InputStream in) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
(來源: http : //www.vogella.com/articles/AndroidNetworking/article.html )
但是對於HttpGet和HttpPost,Zig的ContentService
是必經之路。 我將返回值包含在Google腳本的doGet()或doPost()中,如下所示:
return ContentService.createTextOutput('Success');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.