尝试通过PHP POST方法提交android表单数据

时间:2018-10-05 04:15:19

标签: java php android forms http

我正在尝试创建一个通过POST方法发送信息的表单。

public class PostData extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... params) {
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://www.yourdomain.com/serverside-script.php");
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("id", "01"));
            nameValuePairs.add(new BasicNameValuePair("message", params[0]));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            try {
                HttpResponse response = httpclient.execute(httppost);
                String op = EntityUtils.toString(response.getEntity(), "UTF-8");//The response you get from your script
                return op;
            } catch (IOException e) {
                e.printStackTrace();
            }
            //reset the message text field
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        msgTextField.setText("");
        Toast.makeText(getBaseContext(), "Sent", Toast.LENGTH_SHORT).show();
    }
}

但是当我尝试导入HttpClient,HttpPost,BaseNameValuePair等时出现错误。

import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

请帮助!

2 个答案:

答案 0 :(得分:0)

HttpClient在API级别 22 中已弃用,在API级别 23 中已删除。您必须使用HttpURLConnection

说明如何使用:-

https://developer.android.com/reference/java/net/HttpURLConnection

示例:-

URL url = new URL("http://yoururl.com");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);

Uri.Builder builder = new Uri.Builder()
        .appendQueryParameter("id", "01")
        .appendQueryParameter("message", params[0]);
String query = builder.build().getEncodedQuery();

OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
            new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();

conn.connect();

但是,如果您仍然想使用它,则需要为其添加其他依赖项。

答案 1 :(得分:0)

您需要使用okhttp而不是http clinet 在此处查看okhttp发布数据。

https://www.studytutorial.in/android-okhttp-post-and-get-request-tutorial