쓰 C#클라이언트를 섭취하는 자바를 반환하는 웹 서비스 개체 배열

StackOverflow https://stackoverflow.com/questions/64833

  •  09-06-2019
  •  | 
  •  

문제

쓰 C#클라이언트는 웹 서비스에 쓰는 언어(예,다른 사람).추가 웹 참조하는 클라이언트와 나를 호출할 수 있는 방법에서는 웹 서비스로 확인된다.

서비스이 변경되었을 배열을 반환 객체의 클라이언트가 제대로 구문 분석하지 못하는 반환된 비누 메시지입니다.

MyResponse[] MyFunc(string p)

class MyResponse
{
    long id;
    string reason;
}

을 때 생성되 C#프록시가 통화는 웹 서비스를 사용하여(SoapHttpClientProtocol.Invoke),나를 기대하 MyResponse[]배열과 길이가 1,즉 하나의 요소입니다.내가 무엇을 얻기후 호출하는 요소 id=0 이유=null 에 관계없이,서비스 실제로 반환합니다.패킷 스니퍼를 사용하여,내가 볼 수 있는 서비스가 돌아온 나타나는 것이 합법적인 비누와 메시지를 id 및 이유를 설정하면 null 이 아닌 값입니다.

은 거기에 몇 가지 트릭을 얻 C#클라이언트를 호출하 Java 반환하는 웹 서비스 someobject[]?나는 일할 것이 점점에 살균 데 필요한 경우입니다.

편집:이 웹 참조"을 통해 추가 웹 참고...".대 2005,.NET3.0.

도움이 되었습니까?

해결책

있는 동안,하지만 나는 것을 기억하는 데 문제가와 약간의 차이에 어떻게 기본 네임스페이스 처리한다.Net 및 Java web services.

더블 확인 생성되 c#프록시 클래스와는 네임스페이스 내에서 선언(특히 기본값 xmlns=""),무엇에 대해 자바 서비스입니다.가 될 것입니다 아마 매우 미묘한 차이는 당신이 당신을 다시합니다.

이 경우 당신은 더 제공하는 네임스페이스 선언 c#특성이 있습니다.

다른 팁

감사 서안,나는 솔루션입니다.

Wsdl 서비스에 대해 포함된 라인

<import namespace="http://mynamespace.company.com"/>

비누는 클라이언트로 보내 서버가 다음과 같은 특성에 모든 데이터 요소:

xmlns="http://mynamespace.company.com"

하지만 xml 페이로드의 응답(서비스에서 다시 클라이언트)았 이는 네임스페이스 포함합니다.에 땜질 HTTP 응답(을 얻었는데,가 WireShark다),나는 것을 관찰했다.NET 프록시 등이 올바르게 선택하 MyResponse 값을 경우 강제 xmlns 특성에 반환되는 모든 데이터 요소입니다.

짧은 변경하는 서비스는 없어,이 문제를 해결하기 편집 VS 생성 프록시 클래스(예를 들어 참조.cs)을 보고선 다음과 같다:

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://mynamespace.company.com")]
public partial class MyResponse {

주석으로 유형 특성 라인입니다.이 말할 것이다 CLR 보에 대한 응답의 요소를 기본 네임스페이스 보다는 오히려 하나로 지정 wsdl.당신을 다시 실행하는 이마다 당신은 참조를 업데이트,하지만 적어도 그것은 작품이다.

에서 당신의 질문에,그것은 다음과 같 당신이 클라이언트에서 일 한 지점,그리고 다음의 서비스를 변경되었을 배열을 반환.게 확신을 다시 생성 프록시서 반환된 비누 메시지가 병렬화된 클라이언트 측에서 작동합니다.그것은 명확하지 않았을 했었던 이 단지 확인하기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top