Usando o Android para enviar para um Formulário de planilha do Google
Primeira vez fazendo uma pergunta aqui. Normalmente, consigo encontrar minha resposta sem precisar perguntar, mas desta vez estou preso e não consigo descobrir o que está faltand
Estou apenas tentando fazer com que meu aplicativo Android preencha um formulário em um site e envie-o. Não preciso que o aplicativo faça nada com os dados enviados, basta preencher o formulário e enviá-lo. Basicamente, estou tentando coletar os resultados de um aplicativo de votação. Eu pensei que o envio de formulários seria simples, então criei uma planilha do Google e fiz um formulário a partir dele. Pensei em apontar o aplicativo Android para o formulário e, em seguida, teria todos os dados na planilha para visualização posterior. No entanto, não consigo que o aplicativo Android preencha o formulário. Aqui estão os recursos.
private void submitVote(String outcome) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("https://spreadsheets.google.com/spreadsheet/formResponse?hl=en_US&formkey=dDlwZzh4bGFvNFBxUmRsR0d2VTVhYnc6MQ&ifq");
List<BasicNameValuePair> results = new ArrayList<BasicNameValuePair>();
results.add(new BasicNameValuePair("entry.0.single", cardOneURL));
results.add(new BasicNameValuePair("entry.1.single", outcome));
results.add(new BasicNameValuePair("entry.2.single", cardTwoURL));
try {
post.setEntity(new UrlEncodedFormEntity(results));
} catch (UnsupportedEncodingException e) {
// Auto-generated catch block
Log.e("YOUR_TAG", "An error has occurred", e);
}
try {
client.execute(post);
} catch (ClientProtocolException e) {
// Auto-generated catch block
Log.e("YOUR_TAG", "An error has occurred", e);
} catch (IOException e) {
// Auto-generated catch block
Log.e("YOUR_TAG", "An error has occurred", e);
}
}
Fiz público o formulário e a planilha para ficar à vontade para mexer nele e tentar fazer com que você trabalhe sozinh
Não recebo erros do meu programa, nem erros de compilação, nem erros no DDMS. Quando realmente executo o programa e clico no botão que executa esse código, vejo o atraso, pois agora ele está no thread da interface do usuário, então sei que está em execução. Parece que tudo está funcionando perfeitamente, mas minha planilha não é atualizad
Alguma ideia? Tenho certeza de que estou perdendo algo estúpido, mas qualquer ajuda seria apreciada.
Aqui está o código atualizado com muitas coisas de log e depuraçã
private void submitVote(String outcome) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("https://spreadsheets.google.com/spreadsheet/formResponse?hl=en_US&formkey=dDlwZzh4bGFvNFBxUmRsR0d2VTVhYnc6MQ&ifq");
List<BasicNameValuePair> results = new ArrayList<BasicNameValuePair>();
results.add(new BasicNameValuePair("entry.0.single", cardOneURL));
results.add(new BasicNameValuePair("entry.1.single", outcome));
results.add(new BasicNameValuePair("entry.2.single", cardTwoURL));
try {
post.setEntity(new UrlEncodedFormEntity(results));
} catch (UnsupportedEncodingException e) {
// Auto-generated catch block
Log.e("YOUR_TAG", "An error has occurred", e);
}
try {
HttpResponse httpResponse = client.execute(post);
Log.e("RESPONSE", "info: " + httpResponse);
BufferedReader rd = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));
String line;
while ((line = rd.readLine()) != null) {
Log.i("words", line);
}
Intent intent = new Intent(this, ReadingView.class);
intent.putExtra("html", line);
startActivity(intent);
} catch (ClientProtocolException e) {
// Auto-generated catch block
Log.e("YOUR_TAG", "client protocol exception", e);
} catch (IOException e) {
// Auto-generated catch block
Log.e("YOUR_TAG", "io exception", e);
}
}
Eu uso o ReadingView.class para outra coisa no meu aplicativo, mas o sequestrou para esse fim de registro agora. Ele possui apenas um método onCreate (), que está abaixo.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.readingview);
WebView mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
//mWebView.loadUrl(getIntent().getExtras().getString("url"));
mWebView.loadData(getIntent().getExtras().getString("html"), "text/html", "utf-8");
}
Também vale notar que no DDMS ele registra apenas uma saída de linha. Eu acredito que isso é apenas porque o código html é retornado como uma única linha. Corrija-me se eu estiver errado