List类型不是通用的;不能使用参数[HTTPClient]对其进行参数化

import java.awt.List;

import java.awt.image.BufferedImage;

import java.io.BufferedReader;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.InputStreamReader;

import java.util.ArrayList;

import javax.imageio.ImageIO;

import org.apache.commons.codec.binary.Base64;

import org.apache.http.HttpResponse;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.omg.DynamicAny.NameValuePair;

public class Upload {

public static void main (String[] args) {

System.out.println(Imgur("C:\\Users\\username\\Desktop\\image.jpg", "clientID"));

}

public static String Imgur (String imageDir, String clientID) {

//create needed strings

String address = "https://api.imgur.com/3/image";

//Create HTTPClient and post

HttpClient client = new DefaultHttpClient();

HttpPost post = new HttpPost(address);

//create base64 image

BufferedImage image = null;

File file = new File(imageDir);

try {

//read image

image = ImageIO.read(file);

ByteArrayOutputStream byteArray = new ByteArrayOutputStream();

ImageIO.write(image, "png", byteArray);

byte[] byteImage = byteArray.toByteArray();

String dataImage = new Base64().encodeAsString(byteImage);

//add header

post.addHeader("Authorization", "Client-ID" + clientID);

//add image

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);

nameValuePairs.add(new BasicNameValuePair("image", dataImage));

post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

//execute

HttpResponse response = client.execute(post);

//read response

BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

String all = null;

//loop through response

while (rd.readLine() != null) {

all = all + " : " + rd.readLine();

}

return all;

}

catch (Exception e){

return "error: " + e.toString();

}

}

}

因此,我有了该代码,并通过使用Javahttps错误将其上传至Imgur

v3获得了它,并且在第50行出现了一个错误,因为“ List”告诉我

List类型不是通用的;不能使用参数对其进行参数化

我该怎么解决?

我正在使用http://hc.apache.org/httpclient-3.x/,并希望使用其v3

API将图像上传到imgur。

编辑:更改导入后,我现在得到这些错误。

可以解决,但又给我两个错误。

nameValuePairs.add(new BasicNameValuePair("image", dataImage));

类型List中的方法add(NameValuePair)不适用于参数(BasicNameValuePair)

post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

构造函数UrlEncodedFormEntity(List)未定义

回答:

您的导入有一个细微的错误:

import java.awt.List;

它应该是:

import java.util.List;

问题在于awtJava和Java的util包都提供了一个名为的类List。前者是显示元素,后者是用于集合的通用类型。此外,java.util.ArrayList延长java.util.List

不是java.awt.List这样,如果它不是为仿制药,它会仍然是一个问题。

(由OP定地址其它问题)的回答为您的评论,似乎有 花药 微妙的进口问题。

import org.omg.DynamicAny.NameValuePair;

应该

import org.apache.http.NameValuePair

nameValuePairs现在使用正确的泛型类型参数,为通用的说法new UrlEncodedFormEntity,这就是List<?

extends NameValuePair>,变成有效的,因为 的NameValuePair现在一样 他们

的NameValuePair。以前,org.omg.DynamicAny.NameValuePair没有扩展名org.apache.http.NameValuePair和缩短的类型名在您的文件中NameValuePair评估为org.omg...,但org.apache...在其代码中评估为。

以上是 List类型不是通用的;不能使用参数[HTTPClient]对其进行参数化 的全部内容, 来源链接: utcz.com/qa/424513.html

回到顶部