2016-04-10 15 views
0

Bir PHP sunucusuna bir JSON dizesi göndermeye çalışıyorum, ancak sunucu tarafında hiçbir şey olmuyor. İşte java http gönderi php sunucusuna, hiçbir şey olmuyor

sunucu kodu:

<?php 
    $json = $_POST['json']; 
    $decoded = json_decode($json); 
    echo($decoded); 
?> 

Ve burada JAVA kodu:

public void sendError(Error e) 
{ 
    String json = e.toJSONString(); 
    try 
    { 
     if(url == null) 
     { 
      url = new URL("http://www.rstougaard.dk/errorHandler"); 
     } 
     if(conn == null) 
     { 
      conn = (HttpURLConnection) url.openConnection(); 
     } 
     conn.setDoInput(true); 
     conn.setDoOutput(true); 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); 
     conn.setRequestProperty("json", URLEncoder.encode(json)); 
     output = new DataOutputStream(conn.getOutputStream()); 

     conn.connect(); 
     output.writeBytes("json=" + URLEncoder.encode(json, "UTF-8")); 
     output.flush(); 
     BufferedReader input = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     while(input.ready()) 
     { 
      System.out.println(input.readLine()); 
     } 

     System.out.println(conn.getResponseCode() + " " + conn.getResponseMessage()); 
    } catch (MalformedURLException ex) 
    { 
     Logger.getLogger(ConnectionController.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException exc) 
    { 
     Logger.getLogger(ConnectionController.class.getName()).log(Level.SEVERE, null, exc); 
    } 
} 

.getResponseCode() ve .getResponseMessage() döner '200' ve sırasıyla 'Tamam' . Ve inputStream sadece php kodunu siteden izler ve JSON dizesini izler, bu da bana tuhaf geliyor.

Buraya ne gelmiyorum?

DÜZENLEME

Hala .setResponseMethod içinde POST "() "GET". Ama hiç bir çalışma değişti.

Ben kıvırmak kullanarak denedi

DÜZENLEME kontrol etmek sunucu yanıtı, ama benim java kodunda inputStream ile aynı şey.Onun cevap vermek yerine web sitesinden html/php kodunu basar.

+0

Servis tarafınızı curl ile test ettiniz mi? –

+0

Sunucu günlüklerini kontrol ettiniz mi? – m02ph3u5

+0

Yarından önce sunucu günlüklerine hiç erişimim yok. one.com alanımı barındıranlar ve aparrantly sahiplerinin kendi günlük dosyalarına erişim izni vermezler .... :( – Pogoe

cevap

0

beğenme gibi bir şey ile önceden sunucu yanıtını test etmek deneyebilirsiniz,

Ayrıca "POST" olarak değiştirmeyi deneyin. Temelde bir aptalım ve kodu çalıştırırsam kromda herhangi bir çıkış olup olmadığını kontrol edebileceğimi düşünürdüm, ama tabi ki, farklı bir istek ve çarpışmıyorlardı.

Yukarıdaki kod, benim durumumda amaçlandığı şekilde çalışıyor. Ama yine de yardımlarınız için teşekkürler ve sorun için özür dilerim!

0

Eğer müşteri kodundan bir GET isteği gönderdiğinizi Olabilir:

conn.setRequestMethod("GET"); 

sunucusu POST denetlerken. Evgeny Lebedev önerildiği gibi, sen CURL veya neyin yanlış olduğunu anladım

+0

POST için değiştirmeyi denedim, ama aynı şey .. ve nasıl giderim CURL kullanımı hakkında – Pogoe

+0

Pogoe curl, POST olanlar da dahil olmak üzere istekleri sunucuya gönderebilen bir araçtır.Aslında tarayıcıda web geliştirici araçlarını kullanarak da aynı şey mümkündür.Film sadece doğru bir istek olup olmadığını kontrol etmektir sunucunuz almak istediğiniz yanıtı döndürür.Ve sunucu beklendiği gibi çalışıyorsa - CURL örneği için – micklesh

+0

Java kodundaki değişikliklere devam edin. Bkz. [link] (http://stackoverflow.com/questions/7172784/how-to- post-json-data-with-curl-terminal-komut satırı-test-yaylı-dinlenme) ve tarayıcı için - açık web dev araçları (FF'yi kullanmak için F12 kullanıyorum) Ağ sekmesine gidin ve posta isteğinizi gönderin. Doğru üstbilgileri ve içeriği kullanarak erver – micklesh