簡體   English   中英

當我在android中發送發布請求時,它什么也不返回。 當我向服務器發送發布請求時,它會顯示寫的東西

[英]When I send a post request in android it return nothing. When I send post request to my server it displays the write thing

我是android的初學者,當我發送發布請求時,字符串返回為空(我從日志中確認)。 但是,當我通過hurl.it發送在線帖子請求時,它返回true(在我看來,這是正確的)。 為什么返回空字符串我在php代碼以及android中都沒有發現任何錯誤。 android代碼:

    package com.example.harshitbatra.hammertime;

import android.os.AsyncTask;
import android.util.Log;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

import javax.net.ssl.HttpsURLConnection;

/**
 * Created by Harshit Batra on 06-07-2016.
 */
public class Signupasync extends AsyncTask<String, Void, String>
{
    String username,phone,address,email,password;
    String url;

    private postexecutelistener myListener;

    public Signupasync(postexecutelistener pel,String url,String username, String phone,String address,String email,String password )
    {
        myListener = pel;
        this.url = url;
        this.username = username;
        this.phone = phone;
        this.address = address;
        this.email = email;
        this.password = password;
    }

    public interface postexecutelistener
    {
        public void postexecutedone(String str);
    }

    public String connect()
    {
        HashMap<String,String> hash = new HashMap<>(6);
        hash.put("usernamekey",username);
        hash.put("phonekey",phone);
        hash.put("addresskey",address);
        hash.put("emailkey",email);
        hash.put("passwordkey",password);

        return performPostCall(url,hash);

    }

    public String performPostCall(String requestURL, HashMap<String, String> postDataParams)
    {

        URL url;
        String response = "";
        try
        {
            url = new URL(requestURL);

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(15000);
            conn.setConnectTimeout(15000);
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);


            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os, "UTF-8"));
            writer.write(getPostDataString(postDataParams));

            writer.flush();
            writer.close();
            os.close();
            int responseCode = conn.getResponseCode();

            if (responseCode == HttpsURLConnection.HTTP_OK)
            {
                String line;
                BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                while ((line = br.readLine()) != null)
                {
                    response += line;
                }
            }
            else
            {
                response = "";

            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        return response;
    }
    private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException
    {
        StringBuilder result = new StringBuilder();
        boolean first = true;
        for (Map.Entry<String, String> entry : params.entrySet())
        {
            if (first)
                first = false;
            else
                result.append("&");

            result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
        }
        Log.e("dsasd", "getPostDataString: " + result);
        return result.toString();
    }


    @Override
    protected String doInBackground(String... para)
    {
        return connect();
    }

    @Override
    protected void onPostExecute(String str)
    {
        super.onPostExecute(str);
        Log.d("jsdk", "String from signup.php " + str);
        myListener.postexecutedone(str);
    }

}   

php代碼:

$con = mysqli_connect("mysql.hostinger.in","u626717580_batra","hb99960","u626717580_mydb");


if($con)
{

    $username = $_POST['usernamekey'];
    $phone = $_POST['phonekey'];
    $address = $_POST['addresskey'];
    $email = $_POST['emailkey'];
    $password = $_POST['passwordkey'];


    $sql = "INSERT INTO  `u626717580_mydb`.`signup` (
    `username` ,
    `phone` ,
    `address` ,
    `email` ,
    `password`
    )
    VALUES (
    '$username',  '$phone',  '$address',  '$email',  '$password'
    );
    ";          

    if($username)
    {
        if(mysqli_query($con,$sql) )
        echo "true";
        else
        echo "false";   
    }

}

日志:

 W: java.net.UnknownHostException: Unable to resolve host "hb99960.esy.es": No address associated with hostname
W:     at java.net.InetAddress.lookupHostByName(InetAddress.java:424)
W:     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
W:     at java.net.InetAddress.getAllByName(InetAddress.java:214)
W:     at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
W:     at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
W:     at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
W:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
W:     at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
W:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
W:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
W:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
W:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197)
W:     at com.example.harshitbatra.hammertime.Signupasync.performPostCall(Signupasync.java:79)
W:     at com.example.harshitbatra.hammertime.Signupasync.connect(Signupasync.java:58)
W:     at com.example.harshitbatra.hammertime.Signupasync.doInBackground(Signupasync.java:134)
W:     at com.example.harshitbatra.hammertime.Signupasync.doInBackground(Signupasync.java:26)
W:     at android.os.AsyncTask$2.call(AsyncTask.java:288)
W:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
W:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W:     at java.lang.Thread.run(Thread.java:841)
W: Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
W:     at libcore.io.Posix.getaddrinfo(Native Method)
W:     at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:61)
W:     at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
W:  ... 21 more
W: Caused by: libcore.io.ErrnoException: getaddrinfo failed: EINVAL (Invalid argument)
W:  ... 24 more    
D: String from signup.php 

 last line "String from signup.php" is empty.

如您在堆棧跟蹤中所見,您的Android代碼無法訪問托管PHP的服務器,即hb99960.esy.es。 您確定您嘗試使用“ hurl.it”的Android設備和PC在同一網絡上。

確保可以從設備/仿真器上的瀏覽器訪問“ hb99960.esy.es”。

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM