2011-12-05 15 views
2

我在同一活動中調用兩個Web服務時遇到了一個奇怪的問題。 雖然我打電話給Web服務的兩種方法一個接一個給了我一個例外。 一切都是正確的,我不知道這個問題。 有人遇到過這個問題嗎? 普萊斯給我一些建議...在同一活動中調用Web服務中的兩種方法,併發出異常

這是代碼調用Web服務:

public static String getRelatedVideoResponse(String request, String url, 
     String action, String method, String namespace, String value) { 
    try { 
     System.setProperty("http.keepAlive", "false"); 

     URL u = new URL(url); 

     URLConnection uc = u.openConnection(); 
     HttpURLConnection connection = (HttpURLConnection) uc; 

     connection.setRequestProperty("connection", "close"); 

     connection.setUseCaches(false); 
     connection.setConnectTimeout(30000); 
     connection.setDoInput(true); 
     connection.setDoOutput(true); 
     connection.setRequestProperty("SOAPAction", action); 
     connection.setRequestMethod("POST"); 
     connection.setRequestProperty("Content-Type", 
       "text/xml;charset=UTF-8"); 

     OutputStream out = connection.getOutputStream(); 

     Writer wout = new OutputStreamWriter(out); 

     wout.write(request); 

     wout.flush(); 


     wout.close(); 
     Log.e("before buffer","buffer"); 

     BufferedReader rd = new BufferedReader(new InputStreamReader(
       connection.getInputStream())); 
     Log.e("buffer",rd+""); 
     Log.e("code...", connection.getResponseCode() + ""); 

     while ((StaticUtils.sRelResult = rd.readLine()) != null) { 

      Log.e("result", StaticUtils.sRelResult); 
      return StaticUtils.sRelResult; 
     } 

    } catch (MalformedURLException e) { 

     e.printStackTrace(); 
    } catch (IOException e) { 
     Log.e("error occured", "here"); 
     e.printStackTrace(); 
    } 
    return StaticUtils.sRelResult; 
} 

活動:

protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.searchvideos); 
mHandler = new Handler() { 
      @Override 
      public void handleMessage(Message msg) { 
       // TODO Auto-generated method stub 
       super.handleMessage(msg); 
       switch (msg.what) { 
       case SUCCESS: 
        s = "<tns:int xmlns:tns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">"; 
        t = "</tns:int>"; 
        buffer.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); 
        buffer.append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns=\"http://tempuri.org/\">"); 
        buffer.append("<soap:Body><GetScoresForVideos><videoIDs>"); 
        for (int i = 0; i < StaticUtils.sAlRelId.size(); i++) { 
         buffer.append(s + StaticUtils.sAlRelId.get(i) + t); 
        } 
        buffer.append("</videoIDs>"); 
        buffer.append("</GetScoresForVideos></soap:Body></soap:Envelope>"); 
        Log.e("bufer string", buffer.toString()); 
        WsdlService s = new WsdlService(); 

        s.getRelatedVideoResponse(buffer.toString(), 
          StaticUtils.URL, StaticUtils.RATE_ACTION, 
          StaticUtils.RATE_METHOD, StaticUtils.NAMESPACE, ""); 
break; 
    } 
     }; 

download(); 
} 
private void download() { 
     Runnable r = new Runnable() { 

      public void run() { 
       if (StaticUtils.checkNetworkStatus(getApplicationContext()) == true) { 
        WsdlService service = new WsdlService(
          StaticUtils.NAMESPACE, 
          StaticUtils.RELATED_METHOD_NAME, StaticUtils.URL, 
          StaticUtils.RELATED_SOAP_ACTION); 
        String str = service.getResponseById(Integer 
          .valueOf(videoId)); 

        Log.e("Related videos", str); 
        RelatedParser parser = new RelatedParser(str); 
        parser.parseRelatedVideos(); 
        onSuccessDownload(); 
       } else { 
        onFailureDownload(); 
       } 

      } 
     }; 
     Thread t = new Thread(r); 
     t.start(); 

    } 
public void onSuccessDownload() { 
     mHandler.sendEmptyMessage(SUCCESS); 
    } 

的例外是:

12-05 14:55:11.604: WARN/System.err(3075): java.io.FileNotFoundException: http://192.80.62:48080/Services/v0.2.2/SampleService.svc?wsdl 
12-05 14:55:11.613: WARN/System.err(3075):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 
12-05 14:55:11.613: WARN/System.err(3075):  at com.utils.WsdlService.getRelatedVideoResponse(WsdlService.java:180) 
12-05 14:55:11.613: WARN/System.err(3075):  at com.scopra.screens.RelatedVideos$2.handleMessage(RelatedVideos.java:146) 
12-05 14:55:11.613: WARN/System.err(3075):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-05 14:55:11.613: WARN/System.err(3075):  at android.os.Looper.loop(Looper.java:123) 
12-05 14:55:11.613: WARN/System.err(3075):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
12-05 14:55:11.613: WARN/System.err(3075):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-05 14:55:11.613: WARN/System.err(3075):  at java.lang.reflect.Method.invoke(Method.java:521) 
12-05 14:55:11.613: WARN/System.err(3075):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
12-05 14:55:11.623: WARN/System.err(3075):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
12-05 14:55:11.623: WARN/System.err(3075):  at dalvik.system.NativeStart.main(Native Method) 

謝謝,

+0

當您一次調用一項服務時會發生什麼功能正常? – ingsaurabh

+0

一切都是正確的only.if我運行它們在不同的活動中我得到的迴應,但如果我嘗試在同一活動中運行2方法的Web服務第一種方法只給我第二種方法的響應我越來越以上例外。 – Taruni

+0

好吧,然後發佈你的相關代碼,你是否關閉流後,你完成了他們,即關閉輸入流? – ingsaurabh

回答

相關問題