当前位置: 首页 > 知识库问答 >
问题:

如何获得HttpUrlConnection完整响应

轩辕啸
2023-03-14

在过去的几天里做了一些阅读后,我已经取得了一些进展,下面是我想出的代码:

主要活动:

package com.example.appv_6;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    Handler h1;
    Thread t1;
    TextView Text;
    Button Butt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Text = (TextView) findViewById(R.id.tvText_1);
        Butt = (Button) findViewById(R.id.bButt_1);

        h1 = new Handler(Looper.getMainLooper()){
            @Override
            public void handleMessage(Message msg){
                Text.setText(msg.obj.toString());
            }
        };

        Butt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                t1 = new Thread(new HTTPRequest(h1));
                t1.start();
            }
        });
    }
}

HTTPRequest

package com.example.appv_6;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

public class HTTPRequest implements Runnable {

    Handler h2;

    public HTTPRequest(Handler h) {
        h2 = h;
    }

    @Override
    public void run() {
        try {
            URL url = new URL("my url");
            HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();

            conn.setRequestMethod("POST");

            conn.setDoInput(true);
            conn.setDoOutput(true);

            OutputStream out;
            InputStream in;
            conn.setRequestProperty("accept","text/html");
            conn.setRequestProperty("Cookie","ulogin=111111");
            conn.setRequestProperty("Cookie","upassword=222555");

            out = new BufferedOutputStream(conn.getOutputStream());
            in = new BufferedInputStream(conn.getInputStream());
            //String response = conn.getResponseMessage();

            Message msg = Message.obtain();
            msg.obj = in;

            h2.sendMessage(msg);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();

        }
    }
}

没有错误,一切运行正常,但问题是-我已经建立了这个代码作为一个测试,如果我可以登录我试图登录的网站,但我无法从中获得任何信息。在我按下按钮后,似乎发生了什么事情,我发送到用户界面线程的输入流给了我这个:“java.io.BufferedInputStream@afe19b8”,每次按下按钮后,它都在不断变化。我尝试使用conn.get响应消息()并通过句柄发送它,但它只显示“确定”,所以也没有运气。

我要找的是我发送两个cookie后连接到的网页的源代码,这些cookie可以显示我是否登录。

共有1个答案

雷浩思
2023-03-14

有关如何处理HTTP响应的详细信息,请参阅本主题。

使用Android应用程序登录网站(Java)

 类似资料:
  • 问题内容: 我在andorid中制作了一些代理服务器来修改http标头,它可以正常工作,但是我必须将完整的响应转发到“顶层”。 如何从HttpURLConnection读取整个响应(所有标头,内容,所有内容)? 在getInputStream中,我仅收到内容,是否有可能包含某些内容? 问题答案: 无法直接使用来转储完整的HTTP响应,但是您可以使用其各种方法来重构它。例如, 版画 然后,您可以获取

  • 我想获取用于登录自定义拦截器的HttpServletACK返回内容。开发环境是Spring Boot 1.5.6Java8 Embeded Tomcat 8.0.35,返回内容是RESTful接口json string。这是我获取超文本传输协议响应内容的代码: 当响应json较短时,代码运行良好。但当返回的json太长时,responseContent只包含部分响应内容,在登录之前解析内容失败(需

  • 我想通过连接到另一个url再次解析从解析中获得的值。我怎么修理它? 从scrapy导入蜘蛛从scrapy.selector导入选择器 从堆栈.items导入堆栈项 类StackSpider(Spider):name=“stack”allowed_domains=[“*”]global n#n=1997 start_url=['https://www.melon.com/chart/age/list

  • 如何在androidretrofit2中获得完整的JSON响应。

  • 我正在尝试使用类的实例向远程服务器发送HTTP POST请求。尽管我能够得到响应代码和响应消息,但当我尝试将输入流写入时,我实际上无法读取任何行。 当我分析从WireShark发送的数据包时,我注意到远程服务器正在发送一个完整的响应。我唯一的猜测是,为什么我在Java程序中看不到它,是因为我试图从InputStream中读取的时间太晚了。 那么,如何使用我的对象从远程服务器读取即时、完整的响应?以

  • 我有一个Android应用程序使用房间来保存我的收藏夹。 当调用时,返回一个。我从我的中检索了一个,并希望在发出网络请求后将每个收藏夹转到一个项目中,我的方法返回一个 我认为添加将创建一个新的Flowable,它将在项目发出后发出onComplete(因为Room不会发出onComplete)。 这段代码不起作用,onComplete从来没有被调用,所以也没有被调用。 是否有一种方法可以实现这些调