Android HttpEntity目标主机不能为空
我正在尝试从我的android虚拟机发布到我的开发主机上运行的web API。 我可以做一个GET请求和一个普通的JSON POST,但是当我尝试作为一个多部分来做时,它变得很棘手 经过一些研究,我从穆罕默德·巴巴尔那里找到了一个很好的答案。这有助于HTTP实体 因此,错误是: java.lang.IllegalStateException:目标主机不能为null,也不能在参数中设置。scheme=null,host=null,path= 当代码到达以下位置时发生:Android HttpEntity目标主机不能为空,android,post,multipart,Android,Post,Multipart,我正在尝试从我的android虚拟机发布到我的开发主机上运行的web API。 我可以做一个GET请求和一个普通的JSON POST,但是当我尝试作为一个多部分来做时,它变得很棘手 经过一些研究,我从穆罕默德·巴巴尔那里找到了一个很好的答案。这有助于HTTP实体 因此,错误是: java.lang.IllegalStateException:目标主机不能为null,也不能在参数中设置。scheme=null,host=null,path= 当代码到达以下位置时发生: HttpResponse r
HttpResponse response = client.execute(post);
我的代码:
public class MainActivity extends Activity {
private DefaultHttpClient mHttpClient;
private String result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void ServerCommunication(View view) {
HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
mHttpClient = new DefaultHttpClient(params);
uploadUserPhoto();
}
public void uploadUserPhoto() {
try{
String uri = URLEncoder.encode( "http://10.0.2.2:53918/api/Problems","UTF-8");
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(uri);
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
entityBuilder.addTextBody("Id", "7");
entityBuilder.addTextBody("DateReported", "22/04/2015");
entityBuilder.addTextBody("Category", "C");
HttpEntity entity = entityBuilder.build();
post.setEntity(entity);
HttpResponse response = client.execute(post);
HttpEntity httpEntity = response.getEntity();
result = EntityUtils.toString(httpEntity);
Log.v("result", result);
}
catch(Exception e)
{
e.printStackTrace();
}
}
请帮助我解决上面的IllegalStateException。URLEncoder旨在进行编码,而不是创建带有scheme、host和port的URI。而是将URI移动到HttpPost的构造函数,例如新的HttpPosthttp://10.0.2.2.
此外,此API在API级别22时已被弃用,请参阅以获取较新的替代API。@birmsi别忘了接受最好的答案,并采取适当的措施。