Android에서 C # 웹 서비스로 직렬화 된 개체를 전달할 수 없습니다.

고르 바니

안드로이드 앱에서 ksoap2의 C # 웹 서비스로 객체를 보내고 싶습니다. webService 메서드는 ReceptionCommitItem 개체를 가져옵니다. 이 개체는 C # webService에 정의되어 있습니다.

[Serializable]
[XmlType(TypeName = "RCI")]
public class ReceptionCommitItem
{
    [XmlAttribute(AttributeName = "Id")]
    public int ReceptionNumber { get; set; }
    [XmlAttribute(AttributeName = "St")]
    public ReceptionStatuses NewStatus { get; set; }
    [XmlAttribute(AttributeName = "PRN")]
    public string PartRequestNumber { get; set; }
    [XmlAttribute(AttributeName = "SN")]
    public string SerialNumber { get; set; }
    [XmlAttribute(AttributeName = "BId")]
    public int BrandId { get; set; }
    [XmlAttribute(AttributeName = "PgId")]
    public int ProductGroupId { get; set; }
    [XmlAttribute(AttributeName = "SgId")]
    public int SubgroupId { get; set; }
    [XmlAttribute(AttributeName = "MId")]
    public int ModelId { get; set; }
    [XmlAttribute(AttributeName = "SId")]
    public int SeriId { get; set; }

    [XmlAttribute(AttributeName = "Ad")]
    public string Address { get; set; }

    [XmlAttribute(AttributeName = "HF")]
    public bool HasFactorData { get; set; }

    [XmlAttribute(AttributeName = "CR")]
    public bool CommitReception { get; set; }  

    [XmlAttribute(AttributeName = "CP")]
    public ReceptionChanges ChangedProperties { get; set; }

    [XmlIgnore] 
    public bool HasConfilict;

    public List<FactorPart> FactorParts { get; set; }
    public List<FactorService> FactorServices { get; set; }

    public ReceptionCommitItem()
    {
        this.CommitReception = true;
        this.HasFactorData = false;
        this.ChangedProperties=ReceptionChanges.Nothing;
        FactorParts=new List<FactorPart>();
        FactorServices=new List<FactorService>();
    }
}

이 클래스는 자바에서 폭발로 구현했습니다.

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Vector;

import org.ayriksoft.entekhab.util.Enum.ReceptionChanges;
import org.ayriksoft.entekhab.util.Enum.ReceptionStatuses;
import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;


@Element(name = "item")
public class ReceptionCommitItem implements Serializable {

    @Attribute(name = "Id")

public int ReceptionNumber;

@Attribute(name = "St", required = false)
public ReceptionStatuses NewStatus;

@Attribute(name = "PRN", required = false)
public String PartRequestNumber;

@Attribute(name = "SN", required = false)
public String SerialNumber;

@Attribute(name = "BId")
public int BrandId;

@Attribute(name = "PgId")
public int ProductGroupId;

@Attribute(name = "SgId")
public int SubgroupId;

@Attribute(name = "MId")
public int ModelId;

@Attribute(name = "SId")
public int SeriId;

@Attribute(name = "Ad", required = false)
public String Address;

@Attribute(name = "HF")
public boolean HasFactorData;

@Attribute(name = "CR")
public boolean CommitReception;

@Attribute(name = "CP")
public ReceptionChanges ChangedProperties;

@Attribute(required = false)
public boolean HasConfilict;

public List<FactorPart> FactorParts;

public List<FactorService> FactorServices;


public int getReceptionNumber() {
    return ReceptionNumber;
}

public void setReceptionNumber(int receptionNumber) {
    ReceptionNumber = receptionNumber;
}

public ReceptionStatuses getNewStatus() {
    return NewStatus;
}

public void setNewStatus(ReceptionStatuses newStatus) {
    NewStatus = newStatus;
}

public String getPartRequestNumber() {
    return PartRequestNumber;
}

public void setPartRequestNumber(String partRequestNumber) {
    PartRequestNumber = partRequestNumber;
}

public String getSerialNumber() {
    return SerialNumber;
}

public void setSerialNumber(String serialNumber) {
    SerialNumber = serialNumber;
}

public int getBrandId() {
    return BrandId;
}

public void setBrandId(int brandId) {
    BrandId = brandId;
}

public int getProductGroupId() {
    return ProductGroupId;
}

public void setProductGroupId(int productGroupId) {
    ProductGroupId = productGroupId;
}

public int getSubgroupId() {
    return SubgroupId;
}

public void setSubgroupId(int subgroupId) {
    SubgroupId = subgroupId;
}

public int getModelId() {
    return ModelId;
}

public void setModelId(int modelId) {
    ModelId = modelId;
}

public int getSeriId() {
    return SeriId;
}

public void setSeriId(int seriId) {
    SeriId = seriId;
}

public String getAddress() {
    return Address;
}

public void setAddress(String address) {
    Address = address;
}

public boolean isHasFactorData() {
    return HasFactorData;
}

public void setHasFactorData(boolean hasFactorData) {
    HasFactorData = hasFactorData;
}

public boolean isCommitReception() {
    return CommitReception;
}

public void setCommitReception(boolean commitReception) {
    CommitReception = commitReception;
}

public ReceptionChanges getChangedProperties() {
    return ChangedProperties;
}

public void setChangedProperties(ReceptionChanges changedProperties) {
    ChangedProperties = changedProperties;
}

public boolean isHasConfilict() {
    return HasConfilict;
}

public void setHasConfilict(boolean hasConfilict) {
    HasConfilict = hasConfilict;
}   

public List<FactorPart> getFactorParts() {
    return FactorParts;
}

public void setFactorParts(List<FactorPart> factorParts) {
    FactorParts = factorParts;
}

public List<FactorService> getFactorServices() {
    return FactorServices;
}

public void setFactorServices(List<FactorService> factorServices) {
    FactorServices = factorServices;
}

public ReceptionCommitItem() {
    this.CommitReception = true;
    this.HasFactorData = false;
    this.ChangedProperties = ReceptionChanges.Nothing;
    FactorParts=new ArrayList<FactorPart>();
    FactorServices=new ArrayList<FactorService>();
}
}

다음은 샘플 SOAP 1.1 요청입니다.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <CommitSingleReceiption xmlns="http://samplegroup.ir/">
      <item Id="int" St="-2 or -1 or 0 or 1 or 2 or 3 " PRN="string" SN="string" BId="int" PgId="int" SgId="int" MId="int" SId="int" Ad="string" HF="boolean" CR="boolean" CP="Nothing or Status or PartRequestNumber or ModelTree or Serial or Address">
        <FactorParts>
          <FP Id="int" Q="unsignedByte" W="boolean" P="int" />
          <FP Id="int" Q="unsignedByte" W="boolean" P="int" />
        </FactorParts>
        <FactorServices>
          <FS Id="int" IF="boolean" W="boolean" Q="unsignedByte" SP="int" TP="int" G="unsignedByte" />
          <FS Id="int" IF="boolean" W="boolean" Q="unsignedByte" SP="int" TP="int" G="unsignedByte" />
        </FactorServices>
      </item>    
    </CommitSingleReceiption>
  </soap:Body>
</soap:Envelope>

코드에서 ksoap2에 의해 ReceptionCommitItem을 webService에 보냈습니다.

OPERATION_NAME = webServiceMethodName;
SOAP_ACTION = WSDL_TARGET_NAMESPACE + OPERATION_NAME;
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
                OPERATION_NAME);

PropertyInfo pi = new PropertyInfo();
pi.setName("ReceptionCommitItem");
pi.setValue((ReceptionCommitItem) itemValue);
pi.setType(new ReceptionCommitItem().getClass());
request.addProperty("item", pi);

SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);// running 1.1
soapEnvelope.dotNet = true;
soapEnvelope.setOutputSoapObject(request);
soapEnvelope.addMapping(WSDL_TARGET_NAMESPACE, "ReceptionCommitItem",
      new ReceptionCommitItem().getClass());

HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
try {
    httpTransport.debug = true;
    httpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
    httpTransport.call(SOAP_ACTION, soapEnvelope); 
} catch (Exception e) {
     throw e;
}

내가 앱을 실행할 때 httpTransport.call (SOAP_ACTION, soapEnvelope); 예외가 발생합니다.

**EXCEPTION NAME:  java.lang.RuntimeException: Cannot serialize: ReceptionCommitItem : org.package.bean.ReceptionCommitItem@46022360**
org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:679)
org.ksoap2.serialization.SoapSerializationEnvelope.writeProperty(SoapSerializationEnvelope.java:663)
org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:632)
org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:616)
org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:673)
org.ksoap2.serialization.SoapSerializationEnvelope.writeBody(SoapSerializationEnvelope.java:597)
org.ksoap2.SoapEnvelope.write(SoapEnvelope.java:192)
org.ksoap2.transport.Transport.createRequestData(Transport.java:101)
org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:114)
org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:90)

누군가 나를 도와 주면 감사하겠습니다.

고르 바니

ksoap2의 src (org / ksoap2 / serialization /)에서 SoapSerializationEnvelope 클래스를 확인했고 ReceptionCommitItem의 Enum 속성도 직렬화해야한다는 것을 알았습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++ MFC에서 이진 직렬화 된 개체를 C #에서 역 직렬화 할 수 있습니까?

분류에서Dev

C #에서 배열 개체를 직렬화 할 수 없습니다.

분류에서Dev

Ksoap : 웹 메서드에 매개 변수로 사용자 정의 클래스를 전달할 때 예외를 직렬화 할 수 없습니다.

분류에서Dev

PostAsJsonAsync는 사전에서 개체를 직렬화 할 수 없습니다.

분류에서Dev

C #의 IMGUR API에서 현재 JSON 개체 오류를 역 직렬화 할 수 없습니다.

분류에서Dev

외부 웹 서비스를 호출하는 Databricks UDF는 직렬화 할 수 없습니다 (PicklingError).

분류에서Dev

컨트롤러에서 json 개체를 역 직렬화 할 수 없습니다.

분류에서Dev

매개 변수로 전달 된 DF가 작동하지 않고 작업을 직렬화 할 수 없습니다.

분류에서Dev

MainViewModel이 직렬화 가능으로 표시되지 않았기 때문에 C # 개체를 직렬화 할 수 없습니다.

분류에서Dev

Dlib에서 학습 된 함수를 직렬화 할 수 없음

분류에서Dev

내 클래스 개체를 직렬화 할 수 없습니다.

분류에서Dev

서비스 개체에 매개 변수를 전달할 수 없습니다.

분류에서Dev

Android에서 웹 서비스를 연결할 수 없습니다.

분류에서Dev

C # 창 창에서 개체를 전달한 후 개체 속성에 액세스 할 수 없습니다.

분류에서Dev

START_ARRAY 토큰에서 개체의 인스턴스를 역 직렬화 할 수 없습니다.

분류에서Dev

Java REST API : START_ARRAY 토큰에서 개체의 인스턴스를 역 직렬화 할 수 없습니다.

분류에서Dev

PrestaShop : 웹 서비스를 통해 새로 추가 된 리소스에 액세스 할 수 없습니다.

분류에서Dev

C #에서 개체를 이진 형식으로 직렬화 할 수없는 이유는 무엇입니까?

분류에서Dev

웹 서비스 API에서 C # 개체로 XML 문자열 역 직렬화

분류에서Dev

이미 직렬화 된 클래스를 직렬화 할 수 없습니까?

분류에서Dev

이미 직렬화 된 클래스를 직렬화 할 수 없습니까?

분류에서Dev

Mule에 의해 노출 된 웹 서비스를 호출 할 수 없습니다.

분류에서Dev

메서드에 개체로 전달 된 목록에 레코드를 추가 할 수 없습니다.

분류에서Dev

자식 개체 및 형제 개체에서 개체 이름이 동일한 XML Serializer를 사용하여 개체를 직렬화 할 수 없습니다.

분류에서Dev

C #의 개체를 XML로 직렬화하면 anyType을 "Move"로 변경할 수 없습니다.

분류에서Dev

NSMutableDictionary를 상속하고 NSKeyedArchiver로 직렬화 된 사용자 지정 개체는 역 직렬화 할 수 없습니다.

분류에서Dev

JSON에서 사전을 역 직렬화 할 수 없습니다.

분류에서Dev

C #에서 REST 서비스에서 얻은이 결과를 어떻게 역 직렬화 할 수 있습니까?

분류에서Dev

부스트 그래프 개체를 역 직렬화 할 수 없습니다.

Related 관련 기사

  1. 1

    C ++ MFC에서 이진 직렬화 된 개체를 C #에서 역 직렬화 할 수 있습니까?

  2. 2

    C #에서 배열 개체를 직렬화 할 수 없습니다.

  3. 3

    Ksoap : 웹 메서드에 매개 변수로 사용자 정의 클래스를 전달할 때 예외를 직렬화 할 수 없습니다.

  4. 4

    PostAsJsonAsync는 사전에서 개체를 직렬화 할 수 없습니다.

  5. 5

    C #의 IMGUR API에서 현재 JSON 개체 오류를 역 직렬화 할 수 없습니다.

  6. 6

    외부 웹 서비스를 호출하는 Databricks UDF는 직렬화 할 수 없습니다 (PicklingError).

  7. 7

    컨트롤러에서 json 개체를 역 직렬화 할 수 없습니다.

  8. 8

    매개 변수로 전달 된 DF가 작동하지 않고 작업을 직렬화 할 수 없습니다.

  9. 9

    MainViewModel이 직렬화 가능으로 표시되지 않았기 때문에 C # 개체를 직렬화 할 수 없습니다.

  10. 10

    Dlib에서 학습 된 함수를 직렬화 할 수 없음

  11. 11

    내 클래스 개체를 직렬화 할 수 없습니다.

  12. 12

    서비스 개체에 매개 변수를 전달할 수 없습니다.

  13. 13

    Android에서 웹 서비스를 연결할 수 없습니다.

  14. 14

    C # 창 창에서 개체를 전달한 후 개체 속성에 액세스 할 수 없습니다.

  15. 15

    START_ARRAY 토큰에서 개체의 인스턴스를 역 직렬화 할 수 없습니다.

  16. 16

    Java REST API : START_ARRAY 토큰에서 개체의 인스턴스를 역 직렬화 할 수 없습니다.

  17. 17

    PrestaShop : 웹 서비스를 통해 새로 추가 된 리소스에 액세스 할 수 없습니다.

  18. 18

    C #에서 개체를 이진 형식으로 직렬화 할 수없는 이유는 무엇입니까?

  19. 19

    웹 서비스 API에서 C # 개체로 XML 문자열 역 직렬화

  20. 20

    이미 직렬화 된 클래스를 직렬화 할 수 없습니까?

  21. 21

    이미 직렬화 된 클래스를 직렬화 할 수 없습니까?

  22. 22

    Mule에 의해 노출 된 웹 서비스를 호출 할 수 없습니다.

  23. 23

    메서드에 개체로 전달 된 목록에 레코드를 추가 할 수 없습니다.

  24. 24

    자식 개체 및 형제 개체에서 개체 이름이 동일한 XML Serializer를 사용하여 개체를 직렬화 할 수 없습니다.

  25. 25

    C #의 개체를 XML로 직렬화하면 anyType을 "Move"로 변경할 수 없습니다.

  26. 26

    NSMutableDictionary를 상속하고 NSKeyedArchiver로 직렬화 된 사용자 지정 개체는 역 직렬화 할 수 없습니다.

  27. 27

    JSON에서 사전을 역 직렬화 할 수 없습니다.

  28. 28

    C #에서 REST 서비스에서 얻은이 결과를 어떻게 역 직렬화 할 수 있습니까?

  29. 29

    부스트 그래프 개체를 역 직렬화 할 수 없습니다.

뜨겁다태그

보관