><?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>
>     <stopGenerate xmlns="http://instrument1.orbit-lab.org/OrbitWS/">
>       <request_id>string</request_id>
>     </stopGenerate>
>  </soap:Body>
></soap:Envelope>
>
> However, our SOAP request looks like:
>
><?xml version="1.0" encoding="utf-8" ?>
><env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>     xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>  <env:Body>
>     <n1:stopGenerate
> xmlns:n1="http://instrument1.orbit-lab.org/OrbitWS/">
>     </n1:stopGenerate>
>  </env:Body>
></env:Envelope>

How would the call to stopGenerate know that '1' is a request id?

I have had success with using Structs.

  Request = Struct.new(:request_id)
  soap.stopGenerate(Request.new('1'))

Hth,
Kero.