Envoyer et analyser une réponse à l'aide du client HTTP pour une liste JSON
Dans mon code java, j'ai besoin d'envoyer une requête http post à une URL spécifique avec 3 têtes:
URL: http://localhost/something
Referer: http://localhost/something
Authorization: Basic (with a username and password)
Content-type: application/json
Cette fonction retourne une réponse JSON "key":"valeur" de la paire en elle que je puis avoir besoin de l'analyser en quelque sorte à stocker la clé/valeur (Alan/72) dans une CARTE. La réponse est (lors de l'utilisation de SOAPUI ou Facteur de Repos):
{
"analyzedNames": [
{
"alternate": false
}
],
"nameResults": [
{
"alternate": false,
"givenName": "John",
"nameCategory": "PERSONAL",
"originalGivenName": "",
"originalSurname": "",
"score": 72,
"scriptType": "NOSCRIPT",
}
]
}
Je peux le faire à l'aide de SOAPUI ou Facteur de Repos, mais comment puis-je faire cela à l'intérieur de Java que j'obtiens une erreur:
****DEBUG main org.apache.http.impl.conn.DefaultClientConnection - Receiving response: HTTP/1.1 500 Internal Server Error****
Mon code est:
public class NameSearch {
/**
* @param args
* @throws IOException
* @throws ClientProtocolException
*/
public static void main(String[] args) throws ClientProtocolException, IOException {
//TODO Auto-generated method stub
DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
StringWriter writer = new StringWriter();
//Define a postRequest request
HttpPost postRequest = new HttpPost("http://127.0.0.1:1400/dispatcher/api/rest/search");
//Set the content-type header
postRequest.addHeader("content-type", "application/json");
postRequest.addHeader("Authorization", "Basic ZW5zYWRtaW46ZW5zYWRtaW4=");
try {
//Set the request post body
StringEntity userEntity = new StringEntity(writer.getBuffer().toString());
postRequest.setEntity(userEntity);
//Send the request; return the response in HttpResponse object if any
HttpResponse response = defaultHttpClient.execute(postRequest);
//verify if any error code first
int statusCode = response.getStatusLine().getStatusCode();
}
finally
{
//Important: Close the connect
defaultHttpClient.getConnectionManager().shutdown();
}
}
}
Toute aide (avec des exemples de code, y compris des bibliothèques à l'importation) sera le plus apprécié.
GRÂCE
source d'informationauteur Global Dictator
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez le faire avec java
Vous avez besoin du client HTTP apache bibliothèque http://hc.apache.org/ et commons-io
Je vous conseille d' http-request construit sur un serveur apache http api.
Proche de la gare et je vous conseille de lire la documentation avant de l'utiliser.
Remarque: Vous pouvez créer votre propre type, au lieu de Carte pour analyser la réponse. Voir ma réponse ici.