HttpURLConnection空响应Android和Python

HttpURLConnection空响应Android和Python,android,google-app-engine,flask,httpurlconnection,Android,Google App Engine,Flask,Httpurlconnection,如果我忘记了一些规则,请原谅我:p 我正在开发一款android应用程序,它需要将基本的来回数据传输到谷歌应用程序引擎上的应用程序。该应用程序是用python编写的,我正在使用flask框架与该应用程序进行通信(通过http请求、不安全以及我知道的其他一切,但我现在最想要的是概念证明) 我的问题是,当python应用程序部署在gae上,并且我从物理设备上的android应用程序发送请求时,我没有得到响应,但是如果我将必要的URL放在浏览器中,我会得到响应,没有问题 无论如何,java函数代码:

如果我忘记了一些规则,请原谅我:p

我正在开发一款android应用程序,它需要将基本的来回数据传输到谷歌应用程序引擎上的应用程序。该应用程序是用python编写的,我正在使用flask框架与该应用程序进行通信(通过http请求、不安全以及我知道的其他一切,但我现在最想要的是概念证明)

我的问题是,当python应用程序部署在gae上,并且我从物理设备上的android应用程序发送请求时,我没有得到响应,但是如果我将必要的URL放在浏览器中,我会得到响应,没有问题

无论如何,java函数代码:

    private boolean doLogin(String username, String passwd){
    boolean loggedIn = false;
    try {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        URL url = new URL("http://appname.appspot.com/login/admin/admin");// + username + "/" + passwd+"/");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        //con.setRequestMethod("POST");
        InputStream in = new BufferedInputStream(con.getInputStream());

        if (readStream(in) == true){
            loggedIn = true;
        }
        //con.disconnect();
    } catch (Exception e) {
        e.printStackTrace();
    }


    return loggedIn;
}
以及python函数:

@webapp.route('/login/<username>/<passwd>', methods=["GET", "POST"])
def dologin(username, passwd):

def validusertype(u2check, p2check):

    if db.GqlQuery("SELECT * FROM UserAccount WHERE username = :u2check  AND password = :passwd", u2check = u2check, passwd=p2check).count() > 0:
        qry = db.GqlQuery("SELECT * FROM UserAccount WHERE username = :u2check", u2check = u2check)

        for r in qry.fetch(limit=None):
            return r.usertype

    return None

if request.method == "GET":
    _type = validusertype(username, passwd)
    if _type:
        return "True"
# elif request.method == "POST":


# Fall though - if nothing above takes, we end up here.
return "False"
还要将这几行放在onCreate()中:


很抱歉这么说,但是您的Java代码是完全错误的。请查看使用HttpURLConnection的一些示例,然后重试。或者使用包装器库,因为我承认
HttpURLConnection
使用起来非常麻烦,而且API不好。然后向我们显示堆栈跟踪或错误消息。就是这样,它没有显示任何错误,python代码是否正常?这可能是复制/粘贴问题,但python代码会导致语法错误。您有
def dologin(…
),但没有函数体;它后面紧跟着另一个相同缩进级别的函数定义。看起来dologin行之后的所有内容都应该缩进?@dano Yep很抱歉,这是一个复制/粘贴错误。python代码在浏览器中根据需要工作(即浏览器显示“True”)当细节是正确的)不知何故,由于一个完全盲目的奇迹,我让它工作了,在java的其余部分有一些愚蠢的错误导致了一个不相关的问题,但我对它们进行了分类。我将把我所做的添加到原始帖子中。
try {
        URL url = new URL("http://app.appspot.com/login/admin/admin");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(10000 /* milliseconds */);
        conn.setConnectTimeout(15000 /* milliseconds */);
        conn.setRequestMethod("GET");
        conn.setDoInput(true);
        // Starts the query
        conn.connect();

        is = conn.getInputStream();

        // Convert the InputStream into a string
        String contentAsString = readStream(is);
        return contentAsString;

    // Makes sure that the InputStream is closed after the app is
    // finished using it.
    } finally {
        if (is != null) {
            is.close();
        } 
    }
StrictMode.ThreadPolicy policy = new StrictMode.
ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);