2012-03-25 20 views
-1

A haben einfache Java-Klasse, um mein Servlet zu testen. Es sendet JSON und empfängt Xml, ich vergleiche sie und bekomme immer nicht gleich, aber sie sollten gleich sein. Was könnte das Problem sein? Servlet sendet UTF-8. und string sieht gleich aus, sind aber nicht gleich.Vergleichen Strings Servlet Antwort

public static void main(String[] args) throws URISyntaxException, 
     HttpException { 
    HttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost("http://localhost:8080/converter/cs"); 
    String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><sample><color type=\"string\">red</color></sample>"; 
    try { 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
     nameValuePairs.add(new BasicNameValuePair("json", 
       "{\"color\": \"red\"}")); 

     post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response = client.execute(post); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(
       response.getEntity().getContent())); 
     String line = ""; 
     StringBuilder s = new StringBuilder(); 
     while ((line = rd.readLine()) != null) { 
      System.out.println(line); 
      s.append(line); 
     } 
     System.out.println(s.length()); 
     System.out.println(expected.length()); 
     System.out.println(s.toString()); 
     if (s.equals(expected)) { 
      System.out.println("equal"); 
     } else 
      System.out.println("not equal"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+2

Wäre es nicht sinnvoll, nur über die tatsächlichen Charaktere zu gehen und zu sehen, wo Sie falsche Annahmen machen ?! –

+0

if (s.toString(). Ist gleich (erwartet)). Also konstruiere zuerst einen String aus dem String-Puffer. Das Hinzufügen von toString() half. Sory für so dumme Frage, habe nicht für etwa 2 Wochen normal schlafen, versuchen, einen Job zu bekommen. – user1255246

+0

@ user1255246 - Sie sollten die Antwort auf diese Frage – RonK

Antwort

2

Wie das OP in den Kommentaren erwähnt - das Problem ist beim Vergleich verschiedener Arten von Objekten. Im Code der Objekte sind wie folgt definiert:

String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><sample><color type=\"string\">red</color></sample>"; 
... 
    StringBuilder s = new StringBuilder(); 
    ... 
     s.append(...); 
    ... 
    if (s.equals(expected)) {... // The problem is here, s and expected are not of the same class 

den Zustand Ersetzen mit:

if (s.toString().equals(expected)) {... 

das Problem behoben wird.

+0

Vielen Dank! das hat wirklich geholfen – user1255246