2011-02-12 2 views
1

저는 WCF 서비스에 SMS 기능을 추가하고자합니다. Penny SMS이라는 저렴한 SMS 서비스를 발견했습니다.WCF 서비스에서 C#을 사용하는 json?

해당 인터페이스는 json을 지원합니다. 하지만 내 WCF 서비스에서 어떻게 호출해야할지 모르겠다.

샘플 JSON-RPC 요청

{ "method": "send", 
    "params": [ 
      "YOUR_API_KEY", 
      "[email protected]", 
      "5551231234", 
      "Test Message from PENNY SMS" 
      ] 
} 

내가 부를 것이다 어떻게 그 WCF 서비스에서 C와 함께 # : 여기

인터페이스/예이다? 내가 찾고있는 것은 이것을 메서드 호출로 감싸는 방법이다. 즉, C#을 더 행할 경우 그들은 또한 XML-RPC API를 지원

StaticSMSClass.SendSMS("1234567890", "My Message to send"); 

참고 :처럼 뭔가.

업데이트 : 전화를 직접 만들었으나 작동하지 않았습니다. 나는 나의 시도를 별도의 질문에 게시하고 누군가가 그것을 할 수있는 방법이 있는지 알아볼 것입니다.

답변

5

원격 서버에 JSON 메시지와 함께 HTTP POST를 보내야합니다. HttpWebRequest으로이 작업을 수행 할 수 있습니다. 수동으로 JSON을 작성하거나 (메시지는 단순 해 보입니다) 또는 유형을 정의한 후 JSON serializer을 사용하십시오.

string json = // Your JSON message 
WebRequest request = WebRequest.Create ("http://api.pennysms.com/jsonrpc"); 
request.Method = "POST"; 
var postData = Encoding.UTF8.GetBytes(json); 
request.ContentLength = postData.Length; 
request.ContentType = "text/json"; 
using(var reqStream = request.GetRequestStream()) 
{ 
    reqStream.Write(postData); 
} 
using(var response = request.GetResponse()) 
{ 
    // Response status is in response.StatusCode 
    // Or you can read the response content using response.GetResponseStream(); 
} 
+0

어떻게해야합니까? – Vaccano

+0

업데이트 된 답변보기 – driis

+0

wcf 보안을 적용 할 수 있습니까? – RollRoll

1

확인 WCF REST API를 :

MSDN has an example

, 당신의 경우에 그것은 (안된)과 같을 것입니다. 그들은 JSON을 제공합니다. 아마도 JSON (내부 WCF 솔루션에서 작동합니다)을 보낼 수도 있습니다. 어쩌면 당신은 wsdl에서 서비스를 실행하기 위해 계약을 구성해야하지만 어쩌면 제대로 작동 할 수도 있습니다.

2

"WCF JSON 웹 서비스를 사용하기위한 클라이언트 구성" WCF를 사용하여 JSON 클라이언트를 만드는 방법에 대한 내용은 my answer을 참조하십시오.

2

지금까지 답변이 좋았지 만 WCF 서비스에 속해 있기 때문에 활용할 수있는 추가 기능은 DataContractJsonSerializer를 사용하는 것입니다.

특히, 나는 driis의 첫 번째 줄에 실제로 JSON을 채우는 방법을 참조합니다. 그런 다음

[DataContract] 
class SomeType 
{ 
    [DataMember] 
    string method; 
    [DataMember] 
    string[] params; 
} 

단지 SomeType의 인스턴스마다 작성하고 JSON으로 직렬화 :

string json = // Your JSON message 

자, 이렇게하는 가장 좋은 방법 중 하나는 이러한 회원들과 새로운 클래스를 만들 수 있습니다 데이터 조각을 보낼 때마다 DataContractJsonSerializer를 사용합니다. DataContractJsonSerializer 독립 실행 형을 사용하는 방법은 http://msdn.microsoft.com/en-us/library/bb412179.aspx을 참조하십시오.

희망이 도움이됩니다.

관련 문제