相关疑难解决方法(0)

如何使用java.net.URLConnection来触发和处理HTTP请求

java.net.URLConnection在这里经常询问使用情况,Oracle教程对此非常简洁.

该教程基本上只显示了如何触发GET请求并读取响应.它没有解释如何使用它来执行POST请求,设置请求标头,读取响应标头,处理cookie,提交HTML表单,上传文件等.

那么,我如何使用java.net.URLConnection触发和处理"高级"HTTP请求?

java http urlconnection httprequest httpurlconnection

1903
推荐指数
11
解决办法
100万
查看次数

如何将Apache HTTP API(旧版)作为编译时依赖添加到Android M的build.grade?

如前所述这里,Android的M将不支持的Apache HTTP API.文档声明:

请改用HttpURLConnection类.

要么

要继续使用Apache HTTP API,必须首先在build.gradle文件中声明以下编译时依赖项:

android {useLibrary'org.apache.http.legacy'}

我已经将我项目的大部分HttpClient用法转换为HttpURLConnection,但是,我仍然需要在一些领域使用HttpClient.因此,我试图将'org.apache.http.legacy'声明为编译时依赖项,但在build.gradle中出现错误:

找不到Gradle DSL方法:'useLibrary()'

我的问题是:如何在项目中将'org.apache.http.legacy'声明为编译时依赖项?

任何帮助深表感谢.谢谢

apache android httpclient build.gradle android-6.0-marshmallow

94
推荐指数
5
解决办法
10万
查看次数

如何在Android Marshmallow上使用传统的Apache HTTP客户端?

背景

在Android Marshmallow上,Google完全取消了对Apache HTTP客户端的支持(链接在这里),因为与替代方案相比,它没有良好的性能.

这可能也是Android Marshmallow上如此多应用程序崩溃的原因.

问题

通过将此行添加到gradle文件,Google允许您仍然使用此API,而不是内置的API:

useLibrary 'org.apache.http.legacy'
Run Code Online (Sandbox Code Playgroud)

所以,这就是我做的:

dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
}
Run Code Online (Sandbox Code Playgroud)

和:

android {
    compileSdkVersion 'android-MNC'
    buildToolsVersion "23.0.0 rc3"
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        applicationId "com.example.user.androidmtest"
        minSdkVersion 'MNC'
        targetSdkVersion 'MNC'
        versionCode 1
        versionName "1.0"
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试它时,它编译得很好(没有显示错误,我可以运行概念验证应用程序,因为它没有任何特殊代码),但当我尝试使用我知道的一些类时是旧API的一部分(如"HttpClient"类),我看到它不允许我这样做.

我知道不建议使用此解决方案,但我们必须让应用程序准备好至少暂时在那里工作,直到我们100%完成Android Marshmallow应该改变的所有事情,我们不希望出现意外情况.崩溃的形式.

这是一个截图:

在此输入图像描述

这个问题

它为什么会发生?我使用得当吗?


编辑:这里报告了这个问题:

https://code.google.com/p/android/issues/detail?id=181474

java android android-gradle-plugin android-6.0-marshmallow

74
推荐指数
5
解决办法
8万
查看次数

Apache HttpClient Android(Gradle)

我已将此行添加到build.gradle中

compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5'
Run Code Online (Sandbox Code Playgroud)

我想在我的代码中使用MultipartEntityBuilder.但Android Studio不会将库添加到我的代码中.谁能帮我这个?

android gradle apache-httpcomponents multipartentity android-studio

52
推荐指数
4
解决办法
13万
查看次数

我需要Android中的HttpClient替代选项,以便将数据发送到PHP,因为它不再受支持

目前我使用HttpClient,HttpPost将数据发送到我的PHP serverAndroid app,但所有这些方法是在API 22弃用,在API 23取出,那么有什么替代方案呢?

我到处搜索,但没有找到任何东西.

java api android http-post apache-commons-httpclient

27
推荐指数
3
解决办法
5万
查看次数

从API23移除Apache HTTP Client会对Volley产生影响吗?

正如我们所知,Apache HTTP Client已在API 23中删除

Apache HTTP客户端删除

但是,Volley库目前仍然使用Apache的库如

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.impl.cookie.DateUtils;
Run Code Online (Sandbox Code Playgroud)

我测试了2个项目:一个用于compileSdkVersion 22,另一个用于compileSdkVersion 23获得2个截图:

compileSdkVersion 22

在此输入图像描述

compileSdkVersion 23

在此输入图像描述

我有两个问题:

  1. 当然,使用Volley的API23项目仍然可以成功运行.但是,我不明白他们如何Apache在运行时使用该库,他们是在API22或更低版本中找到的?
  2. 而且,我想知道在不久的将来,Volley会升级以便不再使用Apache图书馆吗?如果没有,当Apache我的图书馆完全删除并且不受支持时,我现在的项目是否仍会继续使用?

也许我的英语不太清楚,但希望你能理解我的问题.

任何解释将不胜感激.

更新:

从@ random的评论中,我使用谷歌的官方Volley库创建了一个新的API23项目(我的意思git clone https://android.googlesource.com/platform/frameworks/volley是谷歌建议的这里),而不是compile 'com.mcxiaoke.volley:library:1.0.17'build.gradle文件中使用.是的,在构建项目时因缺少Apache库而出错.必须按文档添加useLibrary 'org.apache.http.legacy'build.gradle文件中.


第二次更新:

我刚刚定制了谷歌的排球(作为我项目中的一个模块),删除了Apache库.请转到我的GitHub示例项目供您参考.但请注意,它尚未针对所有情况进行全面测试,并且我仅测试了02个简单案例:GET并且POST我的Web服务请求是ASP.NET Web …

apache android httpresponse android-volley android-api-levels

22
推荐指数
2
解决办法
1万
查看次数

在Android中,为什么在API 22中不推荐使用所有org.apache.http.*类(我应该使用什么作为替换)?

ThreadSafeClientConnManager在我的应用程序中使用了一些其他类,如HttpStatus,SSLSocketFactory,PlainSocketFactory,SchemeRegistry等.但是从API 22开始,它们都被标记为已弃用,并且我没有看到任何明确指示替换的内容他们.文档jas说"请使用openConnection().请访问此网页以获取更多详细信息",这并不能说清楚该怎么做.openConnection()只是指向URL类,而网页链接是从2011年开始讨论Apache类和之间的差异HttpUtrlConnection.那么,这是否意味着HttpUrlConnection从现在开始我们应该是useign 类?如果是这种情况,我认为它不是线程安全的(这就是我使用它的原因ThreadSafeClientConnManager).

有人可以帮我澄清一下吗?

android http httpurlconnection

12
推荐指数
1
解决办法
4188
查看次数

Httpclient已弃用

我正在使用HTTPclientdatatransfer 开发一个应用程序.由于HTTPClient不推荐使用,我想将网络部分移植到URLConnection.

ConectionHttpClient.java

package conexao;

import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;

public class ConexaoHttpClient {
    public static final int HTTP_TIMEOUT = 30 * 1000;
    private static HttpClient httpClient;
    private static HttpClient getHttpClient(){
        if (httpClient == null){
            httpClient = new DefaultHttpClient();
            final HttpParams httpParams = httpClient.getParams();
            HttpConnectionParams.setConnectionTimeout(httpParams, HTTP_TIMEOUT);
            HttpConnectionParams.setSoTimeout(httpParams, HTTP_TIMEOUT);
            ConnManagerParams.setTimeout(httpParams, …
Run Code Online (Sandbox Code Playgroud)

php java eclipse android urlconnection

8
推荐指数
1
解决办法
2万
查看次数

不推荐使用HttpClient(android studio,Target = api 22)

在我的Android应用程序中,它说:org.apache.http.client.httpclient已被弃用.经过一些研究,我发现Android已经在API 22中弃用了它.我在论坛中搜索并尝试:"应用程序已停止",搜索谷歌:"应用程序已经停止".所以我不知道该怎么做.我希望你们能帮助我.那么这是我的代码:

        try {

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.URL.com");
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();

        Log.e("log_tag", "connection success");
        //   Toast.makeText(getApplicationContext(), "pass", Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
        Log.e("log_tag", "Error in http connection" + e.toString());
        Toast.makeText(getApplicationContext(), "Connection fail", Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

编辑:

我正在尝试获取我的Mysql数据库的一些数据.你知道一个关于如何完成这个的好教程吗?请告诉我.

java android

6
推荐指数
1
解决办法
1万
查看次数

如何从HttpClient切换到HttpUrlConnection?

我正在创建一个Android应用程序,我通过HttpClient将数据从Android应用程序发送到servlet.我使用HttpPost方法.

我在Android开发者网站上读到Apache HttpClient库在Android Froyo 2.2中有一些错误,毕竟使用HttpUrlConnection而不是HttpPost是一个好习惯.所以我想将我的HttpPost代码转换为HttpUrlConnectio,但不知道如何.

我在这里发布我的Android代码以及servlet代码

Android代码

private String postData(String valueIWantToSend[]) 
    {
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        try 
        {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("param1",valueIWantToSend[0]));
            nameValuePairs.add(new BasicNameValuePair("param2", valueIWantToSend[1]));
            nameValuePairs.add(new BasicNameValuePair("param3", valueIWantToSend[2]));
            nameValuePairs.add(new BasicNameValuePair("param4", valueIWantToSend[3]));
            nameValuePairs.add(new BasicNameValuePair("param5", valueIWantToSend[4]));
            nameValuePairs.add(new BasicNameValuePair("param6", valueIWantToSend[5]));
            nameValuePairs.add(new BasicNameValuePair("param7", valueIWantToSend[6]));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            /* execute */
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity rp = response.getEntity();

            //origresponseText=readContent(response);
        }
        catch (ClientProtocolException e) 
        {
            // TODO Auto-generated catch …
Run Code Online (Sandbox Code Playgroud)

java android servlets httpurlconnection apache-httpclient-4.x

4
推荐指数
2
解决办法
1万
查看次数

Http方法在android studio中不推荐使用警告

我试图用参数做一些http请求.目前我正在使用

 private List<NameValuePair> mParams = new ArrayList<NameValuePair>();
 private DefaultHttpClient mHttpClient;
 private HttpPost mHttpPost;
Run Code Online (Sandbox Code Playgroud)

这些用于发出http请求,它工作正常.但问题是android studio显示所有这些3的弃用警告.我尝试使用, HttpClientBuilder.create().build();但android工作室无法导入库HttpClientBuilder 我尝试下载并添加 此jar依赖 但仍然无法正常工作.这是我的代码

        mHttpClient = new DefaultHttpClient();
        mHttpPost = new HttpPost(url);
        mParams.add(new BasicNameValuePair("key", value));
        mHttpPost.setEntity(new UrlEncodedFormEntity(mParams));
Run Code Online (Sandbox Code Playgroud)

所有这些行都显示了已弃用的警告,这是另一种方法吗?

android deprecated androidhttpclient android-studio

2
推荐指数
1
解决办法
3575
查看次数