gpt4 book ai didi

java - setRequestProperty 方法给出 java.lang.IllegalStateException : Cannot set method after connection is made

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:35 28 4
gpt4 key购买 nike

HttpURLConnection con = null;
Response response = new Response();
String TAG = "HttpConHandler";

try{
/*
* IMPORTANT:
* User SHOULD provide URL Encoded Parms
*/
Log.p(TAG, "URL="+ urlStr);
String q=httpHeaders.get("Authorization");

URL url = new URL(urlStr);
con = (HttpURLConnection) url.openConnection();

con.setRequestProperty("Authorization", q);
con.setRequestProperty("GData-Version", "3.0");

您好,当调用 setRequestProperty 方法时,我收到了 java.lang.IllegalStateException: Cannot set method after connection is made 错误,但是当我在连接之前调用此方法时,我得到 NullPointerException 因为 con 是 null。我该怎么做才能解决这个问题?

最佳答案

请检查来自 Google 的此 URL:http://developer.android.com/reference/java/net/HttpURLConnection.html

可以在设置 header 之前使用 openConnection() 方法。以下是文档中的步骤:

  1. 通过调用 URL.openConnection() 并将结果转换为 HttpURLConnection 来获取新的 HttpURLConnection。
  2. 准备请求。请求的主要属性是它的 URI。请求 header 还可能包括元数据,例如凭据、首选内容类型和 session cookie。
  3. 可选择上传请求正文。如果实例包含请求正文,则必须使用 setDoOutput(true) 配置它们。通过写入 getOutputStream() 返回的流来传输数据。
  4. 阅读回复。响应 header 通常包括元数据,例如响应正文的内容类型和长度、修改日期和 session cookie。可以从 getInputStream() 返回的流中读取响应主体。如果响应没有正文,该方法将返回一个空流。
  5. 断开连接。读取响应正文后,应通过调用 disconnect() 关闭 HttpURLConnection。断开连接会释放连接所占用的资源,以便它们可以关闭或重新使用。

但是,如果问题仍然存在,您可以尝试调试您的代码并检查 connection.connected 私有(private)标志以查看它在哪里变为真;在调用 getContentType() 方法后,我遇到了类似的问题。

否则你可以切换到 HttpClient API:

  HttpClient httpclient = new DefaultHttpClient();

// Prepare a request object
HttpGet httpget = new HttpGet(url);

// Execute the request
HttpResponse response;
try {
response = httpclient.execute(httpget);
....

关于java - setRequestProperty 方法给出 java.lang.IllegalStateException : Cannot set method after connection is made,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726195/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com