2011-06-13 58 views
0

我需要從電話號碼查找運營商名稱。在我的Android應用程序中使用website。 在應用程序中請求和解析HTML工作正常。如何從網站電話號碼找到運營商名稱。 Android應用程序的搜索頁面?

當我查詢請求字符串從應用程序:

地址:.https://nummertjanster.pts.se/net/en/Nummerkapacitet/Enskiltnummer? & _ RP /pts.SearchNumber_ NDC = 70 & _ RP /pts.SearchNumber_ 運算符=商Tele2 + SVERIGE + AB & _ RP /pts.SearchNumber_ telnumber = 4264128

我需要指定'運營商名稱'..我猜是很奇怪的。

的問題是不管哪個號碼(NDC-telnumber)我,如果我在請求字符串所產生的網頁顯示是運營商名稱指定一個運營商的名稱進入。

這裏有一些數字來測試:
073-3355433 =挪威電信SVERIGE AB
073-6107353 =遠攝2 SVERIGE AB
070-3999266 = TeliaSonera公司SVERIGE AB
073-2404070 = Glocalnet AB

如何找到特定號碼的正確操作員名稱?

感謝您的任何幫助。

回答

1

有幾個問題該網站,防止事情的工作:

  1. 它需要一個cookie的POST工作。
  2. 運算符名稱實際上不作爲頁面的一部分返回,它作爲位置重定向(302)的一部分返回。

這段代碼做你想做的事情(我在躲避工作,所以我實際上已經整理好了):它打到主頁面,提取/提取返回的cookie,張貼區號和號碼到該網站然後攔截位置標題並提取操作員名稱。需要注意的是區號並不總是3位數(所以例如用於073-3355433你會做String operatorName = findOperator("73","3355433");

String findOperator(String ndc, String number) 
    {   
     String parameters = "action=search&ndc="+ndc+"&number="+number+"&search=S%F6k"; 
     HttpURLConnection httpUrlConnection = null; 
     OutputStream outputStream = null; 
     InputStream inputStream = null; 
     int code = 0; 
     String response = null; 
     try { 
      java.net.URI u = new java.net.URI("https://nummertjanster.pts.se/net/sv/Nummerkapacitet/Enskiltnummer"); 
      httpUrlConnection = (HttpURLConnection) u.toURL().openConnection(); 
      httpUrlConnection.setConnectTimeout(7500); 
      httpUrlConnection.setReadTimeout(7500); 
      httpUrlConnection.setRequestMethod("GET"); 
      httpUrlConnection.connect(); 
      String cookie = httpUrlConnection.getHeaderField("Set-Cookie"); 

      u = new java.net.URI("https://nummertjanster.pts.se/actionrequest/sv/Nummerkapacitet/Enskiltnummer?__ac_/pts.SearchNumber"); 
      httpUrlConnection = (HttpURLConnection) u.toURL().openConnection(); 
      httpUrlConnection.setConnectTimeout(7500); 
      httpUrlConnection.setReadTimeout(7500); 
      httpUrlConnection.setRequestProperty("Cookie", cookie); 
      httpUrlConnection.setRequestMethod("POST"); 
      httpUrlConnection.setDoOutput(true); 
      httpUrlConnection.connect(); 
      outputStream = httpUrlConnection.getOutputStream(); 
      outputStream.write(parameters.getBytes("UTF-8")); 

      httpUrlConnection.setInstanceFollowRedirects(false); 
      try { 
       inputStream = httpUrlConnection.getInputStream(); 
      } catch (IOException e) { 
       //andrologger.warn("An error occurred while POSTing to " + url, e); 
      } 

      code = httpUrlConnection.getResponseCode(); 
      response = httpUrlConnection.getHeaderField("Location"); 
      if(response != null){ 
       response = response.split("&")[2].split("=")[1]; 
      } 
     }catch(Exception e1){ 
      android.util.Log.v("Configuration","Exception: "+e1.getMessage(), e1); 
     } finally { 
      closeQuietly(outputStream); 
      closeQuietly(httpUrlConnection); 
     } 
     return response; 
    } 

測試了我的手機上,它工作正常。讓我知道它是如何工作的你

+0

它的工作原理魅力。它會拯救我的項目。我想把我的項目費用給你。 – ruben 2011-06-18 08:45:51

+0

Hehehehe。我會滿足於賞金。實際上這個限制實際上是適度的。 – Femi 2011-06-18 14:27:31

+0

我很驚訝你如何做到這一點。在那裏我需要開始瞭解所有這些.. – ruben 2011-06-18 19:18:00

1

它顯然不安靜地工作。你必須找到另一種方式。

也許模仿的形式後,該頁面是這樣做的:http://www.androidsnippets.com/executing-a-http-post-request-with-httpclient

編輯這不起作用

很簡單:

https://nummertjanster.pts.se/net/sv/Nummerkapacitet/Enskiltnummer?&__rp_/pts.SearchNumber_ndc=PUT_AREA_NUMBER_HERE&__rp_/pts.SearchNumber_operator=xxno_operatorxx&__rp_/pts.SearchNumber_telnumber=PUT_NUMBER_HERE 

https://nummertjanster.pts.se/net/sv/Nummerkapacitet/Enskiltnummer?&__rp_/pts.SearchNumber_ndc=696&__rp_/pts.SearchNumber_operator=xxno_operatorxx&__rp_/pts.SearchNumber_telnumber=1788300 
+0

我試過了,它不起作用,它總是顯示你在'SearchNumber_operator = xxno_operatorxx'字段中放置的內容,它把你的名字顯示出來! – ruben 2011-06-16 18:37:36

+0

你確定,試試我的例子即)它給回運營商 – Blundell 2011-06-16 19:10:25

+0

我相信。我把這個:https://nummertjanster.pts.se/net/sv/Nummerkapacitet/Enskiltnummer?&__rp_/pts.SearchNumber_ndc=696&__rp_/pts.SearchNumber_operator=x xno_operatorxx&__ rp_/pts.SearchNumber_telnumber = 1788300並且沒有運營商。 – ruben 2011-06-16 19:24:07

相關問題