2011-07-05 88 views
2

我已經構建了一個簡單的C#應用​​程序(.Net 4.0 + WPF),它可以通過TCP套接字發送和接收JSON消息。c#app:可以實現JSON接口嗎?

作爲下一步,網站和PHP腳本上的JavaScript應用程序應該可以向我的應用程序發送和接收JSON消息。那可能嗎?因爲JS/PHP將使用無狀態的HTTP連接,所以對我的應用程序的請求應該如何工作,例如,如果JS/PHP應用程序向我的應用程序發送JSON消息並且我的應用程序響應(HTTP響應)使用JSON信息?這甚至有可能嗎?我應該使用GET還是POST方法將JSON消息發送到/從我的應用程序?

希望我的問題不會引起太多混淆;-)但我很感謝您給我的每一個提示,澄清或反饋。

邁克

+0

爲什麼您的WPF(胖客戶端)應用程序充當JSON消息的主機?這聽起來不像一個非常強大的服務器解決方案。 –

+0

@Kirk Woll這是一個點對點的應用程序,所以不會有中央主機/服務器 – Mike

+0

啊,所以你期望所有的用戶在他們的防火牆上打個洞? –

回答

3

可以使用的Web方法特別JSON指令通過.NET Web服務實現這一點,例如

[ScriptMethod(UseHttpGet = true, ResponseFormat=ResponseFormat.Json)] 
public string DoSomething(string param1, int param2) 
{ 
    // Do Something 
} 

當指定ResponseFormat.Json屬性,返回的數據將被序列化到合適的JSON格式。另請注意,爲了獲得真正的JSON響應,您需要將請求應用程序中的內容類型設置爲"application/json"。否則,該方法將嘗試將響應包裝爲XML。

此外,我啓用此方法上的HttpGet,以便您可以通過查詢字符串發佈到該方法,例如,

http://www.example.com/service.asmx?param1='Hello'&param2=1; 
+0

哇,謝謝你的快速回答!對於您的示例,我有兩個問題:1.由於我的應用程序是「普通」的WPF應用程序,因此如果它僅具有IP /端口,那麼這是一個問題,例如:http://156.25.365.25:4500/ service.asmx?param1 ='Hello'&param2 = 1; [/ code]? – Mike

+1

@Mike,這不會導致問題。 (儘管我認爲你已經佔用了用戶的防火牆) –

+0

第二個問題:因爲你使用的是「UseHttpGet = true」,這是否意味着JS/PHP應用必須使用GET方法向我的應用發送JSON消息? – Mike