[英]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.