2016-07-18 1 views
0

Je suis en train de poster un xml à partir d'une zone de texte HTML basé de la commande curl ci-dessousWebResponse affichant une chaîne vide

curl -X POST --data-urlencode 'xml=<hml>...</hml>' http://miring.b12x.org/validator/ValidateMiring/ 

Voici mon code jusqu'à présent

@Produces("application/xml") 
public String validate(@FormParam("xml") String xml) { 

    try { 
     Client client = Client.create(); 

     WebResource webResource = client.resource("http://miring.b12x.org/validator/ValidateMiring/"); 

                // POST method 
     //Posting null for some reason. 
     ClientResponse response = webResource.accept("application/xml").post(ClientResponse.class, xml); 
     // check response status code 
     if (response.getStatus() != 200) { 
      throw new RuntimeException("Failed : HTTP error code : " + response.getStatus()); 
     } 

     // display response 
     String output = response.getEntity(String.class); 
     System.out.println("Output from Server .... "); 
     System.out.println(output + "\n"); 
     return output; 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return "Oops"; 
} 

Quand je lance ce avec un XML qui a été testé pour fonctionner à la webapp je reçois toujours la réponse d'entrée nulle.

Je ne sais pas où procéder

EDIT: question primaire a reçu une réponse ci-dessous. Le bogue apparaît avec un + dans le xml ci-dessous est un exemple. . Dans le cadre du « bloc consensus de séquence est le "+" avec brin tous les autres travaux de énumérations (-, - 1,1)

<?xml version="1.0" encoding="UTF-8"?> 

<hml xmlns="http://schemas.nmdp.org/spec/hml/1.0.1" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://schemas.nmdp.org/spec/hml/1.0.1 http://schemas.nmdp.org/spec/hml/1.0.1/hml-1.0.1.xsd" 
version="1.0.1" > 

<!-- 
    MIRING Element 1.1 requires the inclusion of an hmlid. 
    hmlid can be reported in the form of an ISO Object Identifier (OID) 
    "root" represents a unique publically registered organization 
    "extension" is a unique document id managed by the reporting organization. 
--> 

<hmlid root="2.34.48.32" extension="HML.3245662"/> 

<!-- 
    MIRING Element 1.2 requires the inclusion of a reporting-center. 
    reporting-center identifies the organization sending the HML message. 
    "reporting-center-id" is a unique identifier of the sender. 
    "reporting-center-context" reports the context/naming authority of the identifier. 
--> 

<reporting-center reporting-center-id="567"/> 
<sample id="4555-6677-8"> 
    <typing gene-family="HLA" date="2015-01-13"> 

    <!-- 
    MIRING Element 3 requires the inclusion of Genotyping information. 
    The Genotype should include all pertinent Loci, as well as a Genotype in a standard format. 
    GLStrings can be included either as plain text, or as a reference to a publicly 
    available service, such as GL Service (gl.nmdp.org) 
    --> 

    <allele-assignment date="2015-07-28" allele-db="IMGT/HLA" allele-version="3.17.0"> 
    <haploid locus="HLA-A" method="DNA" type="02:20:01"/> 
    <glstring> 
    HLA-A*02:20:01 
    </glstring> 
    </allele-assignment> 
    <typing-method> 

    <!-- 
    MIRING Element 6 requires platform documentation. This could be a peer-reviewed publication, 
    or an identifier of a procedure on a publicly available resource, such as NCBI GTR 
    --> 

    <sbt-ngs locus="HLA-A" 
    test-id="HLA-A.Test.1234" 
    test-id-source="AcmeGenLabs"> 
    <raw-reads uri="rawreads/read1.fastq.gz" 
     availability="public" 
     format="fastq" 
     paired="1" 
     pooled="1" 
     adapter-trimmed="1" 
     quality-trimmed="0"/> 
    </sbt-ngs> 
    </typing-method> 
    <consensus-sequence date="2015-01-13"> 

    <!-- 
    MIRING Element 2 requires the inclusion of Reference Context. 
    The location and identifiers of the reference sequence should be specified. 
    start and end attributes are 0-based, and refer to positions on the reference sequence. 
    --> 

    <reference-database availability="public" curated="true"> 
    <reference-sequence 
     name="HLA-A reference" 
     id="Ref111" 
     start="945000" 
     end="946000" 
     accession="GL000123.4" 
     uri="http://AcmeGenReference/RefDB/GL000123.4"/> 
    </reference-database> 

    <!-- 
    MIRING Element 4 requires the inclusion of a consensus sequence. 
    The start and end positions are 0-based, and refer to positions on the reference sequence (reference-sequence-id) 
    Multiple consensus-sequence-block elements can be included sequentially. 
    --> 

    <consensus-sequence-block reference-sequence-id="Ref111" 
    start="945532" 
    end="945832" 
    strand="+" 
    phase-set="1" 
    expected-copy-number="1" 
    continuity="true" 
    description="HLA-A Consensus Sequence 4.5.67"> 

    <!-- 
     A sequence can be reported as plain text, or as a pointer to an external reference, 
     or as variants from a reference sequence. 
    --> 

    <sequence> 
     CCCAGTTCTCACTCCCATTGGGTGTCGGGTTTCCAGAGAAGCCAATCAGTGTCGTCGCGGTCGCTGTTCTAAAGCCCGCACGCACCCACCGGGACTCAGATTCTCCCCAGACGCCGAGGATGGCCGTCATGGCGCCCCGAACCCTCCTCCTGCTACTCTCGGGGGCCCTGGCCCTGACCCAGACCTGGGCGGGTGAGTGCGGGGTCGGGAGGGAAACCGCCTCTGCGGGGAGAAGCAAGGGGCCCTCCTGGCGGGGGCGCAGGACCGGGGGAGCCGCGCCGGGACGAGGGTCGGGCAGGT 
    </sequence> 

    <!-- 
     MIRING Element 5 requires the inclusion of any relevant sequence polymorphisms. 
     These represent variants from the reference sequence. 
     start and end attributes are 0-based, and refer to positions on the reference sequence. 
     You can see this variant at positions 10 - 15 on the sequence. (945542 - 945532 = 10) 
    --> 

    <variant id="0" 
     reference-bases="GTCATG" 
     alternate-bases="ACTCCC" 
     start="945542" 
     end="945548" 
     filter="pass" 
     quality-score="95"> 

     <!-- 
     The functional effects of variants can be reported using variant-effect. 
     They should use Sequence Ontology (SO) variant effect terms. 
     --> 

     <variant-effect term="missense_variant"/> 
    </variant> 
    </consensus-sequence-block> 
    </consensus-sequence> 
    </typing> 
</sample> 

<!-- 
    Multiple samples can be included in a single message. 
    Each sample should have it's own reference-database(s) even if they are identical to other samples' references. 
--> 

<sample id="4555-6677-9"> 
    <typing gene-family="HLA" date="2015-01-13"> 
    <allele-assignment date="2015-07-28" allele-db="IMGT/HLA" allele-version="3.17.0"> 
    <haploid locus="HLA-A" method="DNA" type="02:20:01"/> 
    <glstring> 
    HLA-A*02:01:01:01 
    </glstring> 
    </allele-assignment> 
    <typing-method> 
    <sbt-ngs locus="HLA-A" 
    test-id="HLA-A.Test.1234" 
    test-id-source="AcmeGenLabs"> 
    <raw-reads uri="rawreads/read2.fastq.gz" 
     availability="public" 
     format="fastq" 
     paired="1" 
     pooled="1" 
     adapter-trimmed="1" 
     quality-trimmed="0"/> 
    </sbt-ngs> 
    </typing-method> 
    <consensus-sequence date="2015-01-13"> 
    <reference-database availability="public" curated="true"> 
    <reference-sequence 
     name="HLA-A reference" 
     id="Ref112" 
     start="945000" 
     end="946000" 
     accession="GL000123.4" 
     uri="http://AcmeGenReference/RefDB/GL000123.4"/> 
    </reference-database> 
    <consensus-sequence-block 
    reference-sequence-id="Ref112" 
    start="945532" 
    end="945832" 
    strand="+" 
    phase-set="1" 
    expected-copy-number="1" 
    continuity="true" 
    description="HLA-A Consensus Sequence 4.5.89"> 
    <sequence> 
     CCCAGTTCTCGTCATGATTGGGTGTCGGGTTTCCAGAGAAGCCAATCAGTGTCGTCGCGGTCGCTGTTCTAAAGCCCGCACGCACCCACCGGGACTCAGATTCTCCCCAGACGCCGAGGATGGCCGTCATGGCGCCCCGAACCCTCCTCCTGCTACTCTCGGGGGCCCTGGCCCTGACCCAGACCTGGGCGGGTGAGTGCGGGGTCGGGAGGGAAACCGCCTCTGCGGGGAGAAGCAAGGGGCCCTCCTGGCGGGGGCGCAGGACCGGGGGAGCCGCGCCGGGACGAGGGTCGGGCAGGT 
    </sequence> 
    </consensus-sequence-block> 
    </consensus-sequence> 
    </typing> 
</sample> 

</hml> 

Merci

+0

essayez de supprimer XML = --data-urlencode ' ... '..quelque chose comme ça. – Prashant

Répondre

0

De la Javadoc de @FormParam (Souligné par l'auteur):

lie la valeur (s) d'un paramètre de forme contenue dans un corps d'entité de requête à un paramètre de procédé de la ressource.

Autrement dit, si vous appelez votre méthode validate(), par exemple. de cURL comme celui-ci

curl -X POST --data-urlencode 'xml=<hml>...</hml>' http://localhost:8080/validate 

le paramètre de la méthode xml sera lié à la valeur <hml>...</hml> sur laquelle le renvoie un message XML is null. (au moins pour moi) le service ValidateMiring.

Si vous, à la place, faites précéder votre paramètre de méthode avec un préfixe xml= avant de poster au service Web réel, vous devriez obtenir un résultat différent:

ClientResponse response = webResource.accept("application/xml").post(ClientResponse.class, "xml=" + xml); 
+0

C'est génial! Question cependant, tandis qu'il accepte le xml est-il une raison pour laquelle il remplace ne pas accepter un "+" dans mon xml bien qu'il fasse partie de l'énumération qui est permise? Dire que la valeur ',' n'est pas acceptée bien que ce soit un "+" – Georgrio

+0

Je viens de vérifier avec les autres énumérations c'est seulement + qu'il ne fonctionne pas (les autres énumérations sont -, - 1, et 1) – Georgrio

+0

@Georgrio : Pouvez-vous fournir un exemple de chaîne XML contenant un caractère '+' qui n'est pas accepté par ce service Web? –