0

問題が発生しています。次のコードをNetBeansからEclipse(ADTプロジェクト)にコピーしました。NetBeansで使用したものと同じライブラリをすべてインポートしましたが、次の行に2つのエラーがあります。

EntityUtils.consume(entity);-メソッドconsume(HttpEntity)は、タイプEntityUtilsに対して未定義です。

httpPut.releaseConnection();-メソッドreleaseConnection()は、タイプHttpPutに対して未定義です。

完全なコード:

import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.util.EntityUtils;
import com.android.lul.classes.User;

public class UserService {

    private static final String BASE_URI = "http://localhost:8080/LULServices/webresources";

    public static String Login (String login, String password, String ipAdd)
    {
        String toReturn = null;

        final DefaultHttpClient httpclient = new DefaultHttpClient();

        try {
                httpclient.getCredentialsProvider().setCredentials(
                    new AuthScope("localhost", 8080),
                    new UsernamePasswordCredentials("xxxx", "xxxx"));

        HttpPut httpPut = new HttpPut(BASE_URI + "/services.users/login");
        HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), 10000);

        httpPut.addHeader("Content-type", "multipart/form-data");

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("login", "login"));
        nameValuePairs.add(new BasicNameValuePair("password", "password"));

        httpPut.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpclient.execute(httpPut);

        try {
                HttpEntity entity = response.getEntity();
                String putResponse = EntityUtils.toString(entity);
                toReturn = putResponse;
                EntityUtils.consume(entity);

            } finally {
                httpPut.releaseConnection();
            }

            } finally {
                httpclient.getConnectionManager().shutdown();

            return toReturn;
        } 

手伝って頂けますか?

ありがとう

4

3 に答える 3

2

Androidには、これらのメソッドを持たないパッケージ化されたバージョンのApacheHttpClientが付属しています。彼らはもはや開発をサポートしておらず、そのコードは時代遅れです。

Androidチームは、新しいコードにHttpClientではなくHttpUrlConnectionを使用することをお勧めします。詳細については、Androidデベロッパーサイトのこのブログをご覧ください。

于 2013-03-26T15:32:14.210 に答える
2

これはファイル(multipart / form-data)をアップロードするためのもののようですが、コードの特定の問題に関しては、もっと簡単な例に従う必要があると思います。

  1. 代わりにhttp://developer.android.com/reference/org/apache/http/HttpEntity.htmlEntityUtils.consume(entity);を実行できますentity.consumeContent();

  2. HTTPRequestクラス(HttpPost、HttpPut)にはメソッドがありませんreleaseConnection()。おそらく、リリースする必要がないためです(私が間違っている場合は誰かが私を修正します)。この方法は通常、持続的接続に適用できますが、ここでは当てはまりません。

于 2014-02-13T09:34:34.097 に答える
0

インポートを確認してください。新しいプロジェクトで使用しているApacheHttpComponentsのバージョンは何ですか?

于 2013-03-26T15:30:35.250 に答える