Невозможно отправить обязательный адрес электронной почты в формы Google с помощью HTTP-запроса. - PullRequest
0 голосов
/ 25 февраля 2019

Я создал форму Google, и мое приложение для Android отправляет значения в эту форму с помощью OkHttp3.Все входные значения могут быть успешно отправлены, кроме обязательного адреса электронной почты, который требуется формой Google для отправки автоматического подтверждения (копия формы) на этот адрес электронной почты.Его имя параметра emailAddress , в отличие от других полей ввода, которые имеют имена параметров в форме entry.some_number .Ответ, полученный в ответ на запрос HTTP, показывает код ошибки 400.Как я могу успешно отправить значение для ввода этого адреса электронной почты?Ниже приведен код моего примера приложения:

MainActivity.java

package com.androidmads.postdatatogoogledocs;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import java.io.IOException;
import okhttp3.*;

public class MainActivity extends AppCompatActivity {

    FloatingActionButton fab;
    EditText edtName, edtPhone, edtEmail;
    CheckBox checkBox1, checkBox2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        fab = (FloatingActionButton) findViewById(R.id.fab);
        edtName = (EditText) findViewById(R.id.edtName);
        edtPhone = (EditText) findViewById(R.id.edtPhone);
        edtEmail = (EditText) findViewById(R.id.edtEmail);
        checkBox1 = (CheckBox) findViewById(R.id.checkbox1);
        checkBox2 = (CheckBox) findViewById(R.id.checkbox2);

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Thread t = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        postData();
                        Log.d("POSTDATA", "POSTED!!!");

                    }
                });
                t.start();
            }
        });
    }

    public static boolean isNetworkAvailable(final Context context) {
        final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivityManager == null) return false;
        final NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        return (networkInfo != null && networkInfo.isConnected());
    }

    public void postData() {

        String fullUrl = "https://docs.google.com/forms/d/e/1FAIpQLSewB7n3aUEBm77-Am4SyMlSITe-oSUACpCzOUBrFDI2mAAhTg/formResponse";
        String cb1 = "";
        String cb2 = "";
        String name = edtName.getText().toString().trim();
        String phone = edtPhone.getText().toString().trim();
        String email = edtEmail.getText().toString().trim();

        if(checkBox1.isChecked()) {
            cb1 = "CheckBox 1";
        }
        if(checkBox2.isChecked()) {
            cb2 = "CheckBox 2";
        }

        OkHttpClient httpClient = new OkHttpClient();
        FormBody body = new FormBody.Builder()
                .add("entry.1527847800", cb1)
                .add("entry.1527847800", cb2)
                .add("entry.1404875234", name)
                .add("entry.1455757342", phone)
                .add("emailAddress", email)
                .build();

        Request request = new Request.Builder()
                .url(fullUrl)
                .post(body)
                .build();

        Response response = null;

        try {
            if(isNetworkAvailable(this) == true) {
                response = httpClient.newCall(request).execute();
            }
        }
        catch(IOException ioe) {
            Log.e("RESPONSE:", ioe.toString());
        }

        if(response == null) {
            Log.d("RESPONSE: ", "NO RESPONSE");

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "Unsuccesful", Toast.LENGTH_SHORT).show();
                }
            });
        }
        else
        {
            Log.d("RESPONSE", response.toString());
        }
    }
}

Ссылка на форму Google: https://docs.google.com/forms/d/e/1FAIpQLSewB7n3aUEBm77-Am4SyMlSITe-oSUACpCzOUBrFDI2mAAhTg/viewform

...