2011-10-14 16 views
6

Mi collego a due server (PROD è https, il server di test è http) sulle mie applicazioni.Qual è la differenza tra httpconnection su J2ME e HttpUrlConnection su Android (errore http 401)

su J2ME: posso connettermi a questi due server senza problemi. su Android Non riesco a connettermi al test-server. Quando la connessione è http, se non uso setChunkedStreamingMode, non posso ottenere responseCode(StringIndexOutOfBoundsException); se uso setChunkedStreamingMode, il codice di risposta è 401. Cosa dovrei fare, dov'è colpa mia ??

Ecco il mio codice Android, Anche se si desidera vedere il codice J2me, posso aggiungerlo anche io.

URL url = new URL(getUrl()); 
      URLConnection conn = url.openConnection(); 
      HttpURLConnection httpConn = (HttpURLConnection) conn; 
      httpConn.setAllowUserInteraction(false); 
      httpConn.setInstanceFollowRedirects(true); 
      httpConn.setConnectTimeout(10000); 
      httpConn.setRequestProperty("User-Agent", util.getDeviceFullModel() 
        + " " + util.getSoftwareVersion()); 
      httpConn.setRequestProperty("Accept-Charset", "utf-8"); 

      httpConn.setRequestProperty("Content-Type", 
        "text/xml; charset=utf-8"); 
      httpConn.setRequestProperty("SOAPAction", 
        "http://tempuri.org/IAuthenticationServiceForGroup/"+conTypeString); 
      httpConn.setRequestProperty("Software-Version", AppData.VERSION); 
      httpConn.setChunkedStreamingMode(getParams().getBytes("UTF8").length); 
      httpConn.setRequestMethod("POST"); 
      httpConn.setDoOutput(true); 
      httpConn.setDoInput(true); 
      httpConn.connect(); 

      os = httpConn.getOutputStream(); 
      os.write(getParams().getBytes("UTF8")); 

      try { 
       os.close(); 
      } catch (Exception e) { 
       onError(e); 
      } 
      response=httpConn.getResponseCode(); 

codice J2ME:

HttpConnection c = (HttpConnection)XConnection.openConnection(XConnection.SERVER + "AuthenticationServiceForGroup.svc"); 

      c.setRequestProperty("User-Agent", XUtil.getDeviceFullModel() + " " + XUtil.getSoftwareVersion()); 
      c.setRequestProperty("Content-Type", "text/xml; charset=utf-8"); 
      c.setRequestProperty("SOAPAction", "http://tempuri.org/IAuthenticationServiceForGroup/"+conType); 
      c.setRequestProperty("Software-Version", XApp.VERSION); 
      c.setRequestMethod(HttpConnection.POST); 

      OutputStream os = null; 

      os = c.openOutputStream(); 
      os.write(sParams.getBytes()); 

      try {os.close();} catch (Exception e) {} 

      if (c.getResponseCode() == HttpConnection.HTTP_OK) 
+1

potresti aggiungere anche il tuo codice j2me? –

+0

@yasin l'ho aggiunto. – atasoyh

risposta

1

Ho risolto questo problema. Uso indirizzo IP invece di collegamento. Il server era server Sharepoint quindi, prova a connettersi direttamente al server sharepoint, quindi il server vuole l'autenticazione :) Non utilizzare direttamente ip :)