Ich brauche Hilfe beim Übertragen meines Codes vom http-Client zur http-URL-Verbindung, weil Android Studio den HTTP-Client nicht unterstützt und es mir weiterhin einen Fehler gibt. Ich benutze die Bing Faces API und diese API hat einige besondere Formatierung, die getan werden muss, wie das Senden einer Kopfzeile oder eines Körpers und ich weiß nicht, ob HTTP-URL-Verbindungen das unterstützt oder nicht.Ich bin in Android Studio und ich muss HTTP-URL-Verbindung statt httpclient verwenden. Wie konvertiere ich meinen Code?
package com.example.test.bingfacessimilar;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
HttpClient httpclient = HttpClients.createDefault();
try {
URL url = new URL("https://api.projectoxford.ai/face/v1.0/detect");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("Content-Type", "application/json");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
URIBuilder builder = new URIBuilder("https://api.projectoxford.ai/face/v1.0/detect");
builder.setParameter("returnFaceId", "true");
builder.setParameter("returnFaceLandmarks", "true");
builder.setParameter("returnFaceAttributes", "{string}");
URI uri = builder.build();
HttpPost request = new HttpPost(uri);
request.setHeader("Content-Type", "application/json");
request.setHeader("Ocp-Apim-Subscription-Key", "77c634fea67944ad861e73ef737bba4b\n");
// Request body
StringEntity reqEntity = new StringEntity("{\n" + "\"url\":\"http://tamildownloads.p4o.net/wp-content/uploads/2014/06/rajinipic.jpg?ckattempt=1\"\n" + "}");
request.setEntity(reqEntity);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println(EntityUtils.toString(entity));
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}